Description of problem: Some of eclipse's bundled ant classes are being picked up by the system ant, which then fails because the classpath (for system ant) does not contain all the classes that the (newer) eclipse ant requires. Version-Release number of selected component (if applicable): eclipse-3.1.0_fc-0.M7.7 How reproducible: Always Steps to Reproduce: 1. echo '<project/>' > build.xml 2. ant Actual results: Buildfile: build.xml java.lang.NoClassDefFoundError: while resolving class: org.apache.tools.ant.Project at java.lang.VMClassLoader.transformException(java.lang.Class, java.lang.Throwable) (/usr/lib/libgcj.so.6.0.0) at java.lang.VMClassLoader.resolveClass(java.lang.Class) (/usr/lib/libgcj.so.6.0.0) at java.lang.Class.initializeClass() (/usr/lib/libgcj.so.6.0.0) at org.apache.tools.ant.Main.runBuild(java.lang.ClassLoader) (/usr/lib/eclipse/plugins/org.apache.ant_1.6.3/lib/ant.jar.so) at org.apache.tools.ant.Main.startAnt(java.lang.String[], java.util.Properties, java.lang.ClassLoader) (/usr/lib/eclipse/plugins/org.apache.ant_1.6.3/lib/ant.jar.so) at org.apache.tools.ant.launch.Launcher.run(java.lang.String[]) (/usr/lib/eclipse/plugins/org.apache.ant_1.6.3/lib/ant-nodeps.jar.so) at org.apache.tools.ant.launch.Launcher.main(java.lang.String[]) (/usr/lib/eclipse/plugins/org.apache.ant_1.6.3/lib/ant-nodeps.jar.so) at gnu.java.lang.MainThread.call_main() (/usr/lib/libgcj.so.6.0.0) at gnu.java.lang.MainThread.run() (/usr/lib/libgcj.so.6.0.0) Caused by: java.lang.ClassNotFoundException: org.apache.tools.ant.Executor not found in... ... Expected results: Buildfile: build.xml BUILD SUCCESSFUL Total time: 1 second
Our eclipse packages create symlinks to the system-installed ant (rather than bundling their own version of ant). In M7 eclipse started bundling ant 1.6.4. Currently our eclipse packages link to what they think is 1.6.2, which causes the breakage you're seeing.
How does that work? org.apache.tools.ant.Executor first appeared in ant-1.6.3: the code that references it must come from that version of ant, so eclipse must be bundling it, must it not?
Created attachment 114870 [details] Fix This ought to fix it. It's going to take some messing about to build it though: 1. delete eclipse-3.1.0_fc-0.M7.5 and eclipse-3.1.0_fc-0.M7.7 from dist-fc4 (to stop the new classes from masking the system ant's) 2. move java-1.4.2-gcj-compat-1.4.2.0-40jpp_26rh out of dist-fc4 temporarily and delete java-1.4.2-gcj-compat-1.4.2.0-40jpp_25rh entirely (so tools.jar is looking in the right place for ecj) 3. build the new eclipse 4. move java-1.4.2-gcj-compat-1.4.2.0-40jpp_26rh back into dist-fc4.
I can confirm that the combination of eclipse-ecj-3.1.0_fc-0.M7.8 and java-1.4.2-gcj-compat-1.4.2.0-40jpp_30rh works beautifully.