Hello classpath hackers! I'm testing cacao with an "ecj -target 1.5"-compiled classpath in addition to the jikes-compiled classpath I normally use. With ecj I ran into a bootstrapping problem that made both cacao and jamvm fail: What makes the difference is that ecj uses StringBuilder instead of StringBuffer in gnu/classpath/SystemProperties.<clinit>()V. StringBuilder uses System.arraycopy, which in turn requires executing System.<clinit>, which indirectly needs gnu/classpath/SystemProperties.getProperty, which in turn throws a NullPointerException because the system properties have not yet been initialized. A solution to this is to use VMSystem.arraycopy instead of System.arraycopy. (StringBuffer already does that.) Cheers -Edwin Index: java/lang/StringBuilder.java =================================================================== RCS file: /sources/classpath/classpath/java/lang/StringBuilder.java,v retrieving revision 1.7 diff -u -p -r1.7 StringBuilder.java --- java/lang/StringBuilder.java 2 Mar 2006 20:18:44 -0000 1.7 +++ java/lang/StringBuilder.java 27 Apr 2006 19:03:02 -0000 @@ -206,7 +206,7 @@ public final class StringBuilder int max = value.length * 2 + 2; minimumCapacity = (minimumCapacity < max ? max : minimumCapacity); char[] nb = new char[minimumCapacity]; - System.arraycopy(value, 0, nb, 0, count); + VMSystem.arraycopy(value, 0, nb, 0, count); value = nb; } }