Hello
While investigating the bug described in HARMONY-3565 I found out that
ECJ (eclipse compiler that we use for java compilation) doesn't work
quite correctly with Harmony. It tries to guess boot classes looking for
files for ${java.home}/lib/*.jar files.
This works for Sun, but doesn't work for Harmony because we have our
boot classes in ${java.home/bin/default/*.jar,
${java.home/lib/boot/*.jar and ${java.home}/lib/boot/*/*.jar files. ECJ
doesn't find them and so running ECJ from the command line as
<path to HDK>/jre/bin/java -jar ecj.jar <java source file>
produces and error that j.l.Object and other core classes cannot be
resolved. The bug is reproducible both on DRLVM and IBM VME. When
passing -bootclasspath or -classpath switches to ECJ explicitly, it
finds boot classes just fine (this is how it is done in our javac
launcher, it passes -classpath switch with value of
org.apache.harmony.boot.class.path property to
org.eclipse.jdt.internal.compiler.batch.Main class).
I don't have a quick solution on how to fix the bug. Tuning ECJ to make
it understand Harmony's JAR files layout doesn't seem to be a good idea
because the actual JAR files are specified in lib/bootclasspath.properties.
We could also ask Eclipse developers to make ECJ understand
org.apache.harmony.boot.class.path property, what do you think?
--
Gregory