[ 
http://jira.codehaus.org/browse/MNG-4529?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=206746#action_206746
 ] 

Thai Ha commented on MNG-4529:
------------------------------

Sorry this sentence is wrong (I cannot edit the ticket after posting it):
"If fields[i] is a final field, on Sun JDK 1.5.0, the operation is successful 
but on IBM JDK 1.5.0, an exception will be thrown."

I rechecked and see that changing a static final field will always generate an 
exception on both IBM JDK and Sun JDK. So I guess that on Sun JDK, somehow the 
line 189 is not executed (maybe another control flow?), and because of that I 
didn't receive the error on Sun JDK.

> maven fails on IBM JDK 1.5.0 with exception IllegalAccessException: Field is 
> final
> ----------------------------------------------------------------------------------
>
>                 Key: MNG-4529
>                 URL: http://jira.codehaus.org/browse/MNG-4529
>             Project: Maven 2 & 3
>          Issue Type: Bug
>    Affects Versions: 2.2.1
>         Environment: Windows XP, IBM JDK 1.5.0
>            Reporter: Thai Ha
>         Attachments: ibm.output.txt, myapp.zip, sun.output.txt
>
>
> On Windows XP, and IBM JDK 1.5.0, maven 2.2.1 fails with the exception 
> IllegalAccessException: Field is final. (See the complete stacktrace is at 
> the end)
> How to duplicate:
> 1. (IMPORTANT) Delete maven local repository at <user home>\.m2\repository 
> directory completely!
> 2. Unzip myapp.zip
> 3. Run command "mvn package -e"
> More info:
> The exception will happen when maven trying to set value to some static final 
> fields. Re-run the command will see another new exception (old exception will 
> not happend again). If you try maven in debug mode (to debug it with 
> Eclipse), the exception will NOT appear. The complete information about 
> maven, JDK, etc. are in the attached file: ibm.output.txt. The other output 
> file (sun.output.txt) is the successful result when running using Sun JDK 
> 1.5.0
> Root cause:
> In StringSearchModelInterpolator.java of maven 2.2.1, there is a code snippet 
> that tries to using Reflection to change values of fields (even if the fields 
> are final)
> Line 175: 
>   fields[i].setAccessible( true );
> Line 189:
>   fields[i].set( target, interpolated );
> If fields[i] is a final field, on Sun JDK 1.5.0, the operation is successful 
> but on IBM JDK 1.5.0, an exception will be thrown. 
> ================ Complete stacktrace ==========================
> org.apache.maven.lifecycle.LifecycleExecutionException: Unable to build 
> project for plugin 'org.apache.maven.plugins:maven-compiler-plugin': Failed 
> to interpolate field: public static final java.lang.String 
> org.codehaus.plexus.util.xml.Xpp3Dom.CHILDREN_COMBINATION_MODE_ATTRIBUTE on 
> class: org.codehaus.plexus.util.xml.Xpp3Dom for project 
> unknown:maven-compiler-plugin at Artifact 
> [org.apache.maven.plugins:maven-compiler-plugin:pom:2.0.2]
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.verifyPlugin(DefaultLifecycleExecutor.java:1557)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.getMojoDescriptor(DefaultLifecycleExecutor.java:1851)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.bindLifecycleForPackaging(DefaultLifecycleExecutor.java:1311)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.constructLifecycleMappings(DefaultLifecycleExecutor.java:1275)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:534)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
>       at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
>       at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
>       at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
>       at 
> org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:615)
>       at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
>       at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
>       at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
>       at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
> Caused by: org.apache.maven.plugin.InvalidPluginException: Unable to build 
> project for plugin 'org.apache.maven.plugins:maven-compiler-plugin': Failed 
> to interpolate field: public static final java.lang.String 
> org.codehaus.plexus.util.xml.Xpp3Dom.CHILDREN_COMBINATION_MODE_ATTRIBUTE on 
> class: org.codehaus.plexus.util.xml.Xpp3Dom for project 
> unknown:maven-compiler-plugin at Artifact 
> [org.apache.maven.plugins:maven-compiler-plugin:pom:2.0.2]
>       at 
> org.apache.maven.plugin.DefaultPluginManager.checkRequiredMavenVersion(DefaultPluginManager.java:293)
>       at 
> org.apache.maven.plugin.DefaultPluginManager.verifyVersionedPlugin(DefaultPluginManager.java:205)
>       at 
> org.apache.maven.plugin.DefaultPluginManager.verifyPlugin(DefaultPluginManager.java:184)
>       at 
> org.apache.maven.plugin.DefaultPluginManager.loadPluginDescriptor(DefaultPluginManager.java:1642)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.verifyPlugin(DefaultLifecycleExecutor.java:1540)
>       ... 19 more
> Caused by: org.apache.maven.project.InvalidProjectModelException: Failed to 
> interpolate field: public static final java.lang.String 
> org.codehaus.plexus.util.xml.Xpp3Dom.CHILDREN_COMBINATION_MODE_ATTRIBUTE on 
> class: org.codehaus.plexus.util.xml.Xpp3Dom for project 
> unknown:maven-compiler-plugin at Artifact 
> [org.apache.maven.plugins:maven-compiler-plugin:pom:2.0.2]
>       at 
> org.apache.maven.project.DefaultMavenProjectBuilder.buildInternal(DefaultMavenProjectBuilder.java:884)
>       at 
> org.apache.maven.project.DefaultMavenProjectBuilder.buildFromRepository(DefaultMavenProjectBuilder.java:255)
>       at 
> org.apache.maven.plugin.DefaultPluginManager.checkRequiredMavenVersion(DefaultPluginManager.java:277)
>       ... 23 more
> Caused by: 
> org.apache.maven.project.interpolation.ModelInterpolationException: Failed to 
> interpolate field: public static final java.lang.String 
> org.codehaus.plexus.util.xml.Xpp3Dom.CHILDREN_COMBINATION_MODE_ATTRIBUTE on 
> class: org.codehaus.plexus.util.xml.Xpp3Dom
>       at 
> org.apache.maven.project.interpolation.StringSearchModelInterpolator$InterpolateObjectAction.traverseObjectWithParents(StringSearchModelInterpolator.java:318)
>       at 
> org.apache.maven.project.interpolation.StringSearchModelInterpolator$InterpolateObjectAction.run(StringSearchModelInterpolator.java:135)
>       at 
> org.apache.maven.project.interpolation.StringSearchModelInterpolator$InterpolateObjectAction.run(StringSearchModelInterpolator.java:102)
>       at 
> java.security.AccessController.doPrivileged(AccessController.java:192)
>       at 
> org.apache.maven.project.interpolation.StringSearchModelInterpolator.interpolateObject(StringSearchModelInterpolator.java:80)
>       at 
> org.apache.maven.project.interpolation.StringSearchModelInterpolator.interpolate(StringSearchModelInterpolator.java:62)
>       at 
> org.apache.maven.project.DefaultMavenProjectBuilder.processProjectLogic(DefaultMavenProjectBuilder.java:990)
>       at 
> org.apache.maven.project.DefaultMavenProjectBuilder.buildInternal(DefaultMavenProjectBuilder.java:880)
>       ... 25 more
> Caused by: java.lang.IllegalAccessException: Field is final
>       at 
> sun.reflect.UnsafeQualifiedStaticObjectFieldAccessorImpl.set(UnsafeQualifiedStaticObjectFieldAccessorImpl.java:77)
>       at java.lang.reflect.Field.set(Field.java:684)
>       at 
> org.apache.maven.project.interpolation.StringSearchModelInterpolator$InterpolateObjectAction.traverseObjectWithParents(StringSearchModelInterpolator.java:189)
>       ... 32 more

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to