I think there may be a bug in JDK 1.0.1 and 1.0.2. I tested
this on Linux and Solaris.
If I have a file X.java:
public class X
{
static final String str = "\uFFFF";
static { str.toCharArray(); }
}
And a file Y.java:
public class Y
{
X x;
}
Then if I javac X.java and then javac Y.java, I get an
exception compiling Y.java, presumably while javac is reading X.class:
java.io.UTFDataFormatException
at java.io.DataInputStream.readUTF(DataInputStream.java)
at java.io.DataInputStream.readUTF(DataInputStream.java)
at sun.tools.java.BinaryConstantPool.<init>(BinaryConstantPool.java:47)
at sun.tools.java.BinaryClass.load(BinaryClass.java:67)
at sun.tools.javac.BatchEnvironment.loadFile(BatchEnvironment.java:171)
at sun.tools.javac.BatchEnvironment.loadDefinition(BatchEnvironment.java:300)
at sun.tools.java.Environment.loadDefinition(Environment.java:110)
at sun.tools.java.ClassDeclaration.getClassDefinition(ClassDeclaration.java:110)
at sun.tools.java.Environment.getClassDefinition(Environment.java:73)
at sun.tools.java.Environment.getClassDefinition(Environment.java:89)
at sun.tools.java.Environment.resolve(Environment.java:129)
at sun.tools.javac.SourceField.check(SourceField.java:131)
at sun.tools.javac.SourceClass.check(SourceClass.java:431)
at sun.tools.javac.SourceClass.compileClass(SourceClass.java:540)
at sun.tools.javac.SourceClass.compile(SourceClass.java:527)
at sun.tools.javac.Main.compile(Main.java:193)
at sun.tools.javac.Main.main(Main.java:289)
Y.java:3: Class X not found in type declaration.
X x;
^
Any comments from the Sun people?
--Rob