Bug 443734 - Ant Task "iajc" with JDK 1.5 fails with java.lang.UnsupportedClassVersionError
Summary: Ant Task "iajc" with JDK 1.5 fails with java.lang.UnsupportedClassVersionError
Status: NEW
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: 1.8.2   Edit
Hardware: PC Windows 7
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: aspectj inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-09-10 12:22 EDT by Masaru Tomimitsu CLA
Modified: 2014-10-08 14:20 EDT (History)
1 user (show)

See Also:


Attachments
eclipse project with sources and libraries (12.51 MB, application/x-zip-compressed)
2014-09-10 12:22 EDT, Masaru Tomimitsu CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Masaru Tomimitsu CLA 2014-09-10 12:22:06 EDT
Created attachment 246920 [details]
eclipse project with sources and libraries

Setting JDK 1.5 as JAVA_HOME, iajc task fails with the following error output

     [echo] Invoking AspectJ compiler
     [iajc] Exception thrown from AspectJ 1.8.2
     [iajc]
     [iajc] This might be logged as a bug already -- find current bugs at
     [iajc]   http://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&component=Compiler
     [iajc]
     [iajc] Bugs for exceptions thrown have titles File:line from the top stack,
     [iajc] e.g., "SomeFile.java:243"
     [iajc]
     [iajc] If you don't find the exception below in a bug, please add a new bug
     [iajc] at http://bugs.eclipse.org/bugs/enter_bug.cgi?product=AspectJ
     [iajc] To make the bug a priority, please include a test program
     [iajc] that can reproduce this exception.
     [iajc] Bad version number in .class file
     [iajc]
     [iajc] Bad version number in .class file
     [iajc] java.lang.UnsupportedClassVersionError: Bad version number in .class file
     [iajc]     at java.lang.ClassLoader.defineClass1(Native Method)
     [iajc]     at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
     [iajc]     at org.apache.tools.ant.AntClassLoader.defineClassFromData(AntClassLoader.java:1128)
     [iajc]     at org.apache.tools.ant.AntClassLoader.getClassFromStream(AntClassLoader.java:1299)
     [iajc]     at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1355)
     [iajc]     at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1315)
     [iajc]     at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1068)
     [iajc]     at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
     [iajc]     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
     [iajc]     at java.lang.ClassLoader.defineClass1(Native Method)
     [iajc]     at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
     [iajc]     at org.apache.tools.ant.AntClassLoader.defineClassFromData(AntClassLoader.java:1128)
     [iajc]     at org.apache.tools.ant.AntClassLoader.getClassFromStream(AntClassLoader.java:1299)
     [iajc]     at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1355)
     [iajc]     at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1315)
     [iajc]     at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1068)
     [iajc]     at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
     [iajc]     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
     [iajc]     at org.aspectj.tools.ajc.Main.runMain(Main.java:225)
     [iajc]     at org.aspectj.tools.ant.taskdefs.AjcTask.executeInSameVM(AjcTask.java:1282)
     [iajc]     at org.aspectj.tools.ant.taskdefs.AjcTask.execute(AjcTask.java:1092)
     [iajc]     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
     [iajc]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [iajc]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     [iajc]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     [iajc]     at java.lang.reflect.Method.invoke(Method.java:592)
     [iajc]     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
     [iajc]     at org.apache.tools.ant.Task.perform(Task.java:348)
     [iajc]     at org.apache.tools.ant.Target.execute(Target.java:392)
     [iajc]     at org.apache.tools.ant.Target.performTasks(Target.java:413)
     [iajc]     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
     [iajc]     at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
     [iajc]     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
     [iajc]     at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
     [iajc]     at org.apache.tools.ant.Main.runBuild(Main.java:811)
     [iajc]     at org.apache.tools.ant.Main.startAnt(Main.java:217)
     [iajc]     at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
     [iajc]     at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

When JAVA_HOME points to above 1.6 installations, it works fine and compiles correctly the 1.4 target.

The used ant version is 1.8.3.
Comment 1 Masaru Tomimitsu CLA 2014-09-10 12:25:28 EDT
This issue occurs also on Linux machine's JDK 1.5. Also on Linux, JDK 1.6 compiles without error, and that, with ant of version 1.7.0. which seems to indicate that it's not ANT's problem.
Comment 2 Andrew Clement CLA 2014-10-08 14:20:13 EDT
I believe this is unfortunately due to the Eclipse Compiler upgrading to a Java 1.6 baseline.  The AspectJ code is still Java5 but because we use a modified Eclipse compiler to do the compiler heavy lifting we now also have this 1.6 requirement. Are you ok to simply use an earlier version of AspectJ that is 1.5 compatible?