It seems like javac gets confused (in some cases) when the file and the package structure differ
calterra% pwd
/home/pelegri/tmp/java/Bug1
calterra% ls
Foo/ classes/
calterra% ls classes
calterra% ls Foo
Bar.java
calterra% cat Foo/Bar.java
public class Bar {
public static void foo() {
Foo.Bar.mumble();
}
}
calterra% /home/kgh/jdk.prebeta.1/bin/javac -d classes Foo/Bar.java
java.lang.NullPointerException
at java.tools.tree.MethodExpression.inline(MethodExpression.java)
at java.tools.tree.ExpressionStatement.inline(ExpressionStatement.java)
at java.tools.tree.CompoundStatement.inline(CompoundStatement.java)
at java.tools.javac.SourceField.inline(SourceField.java)
at java.tools.javac.SourceField.code(SourceField.java)
at java.tools.javac.SourceClass.compileClass(SourceClass.java)
at java.tools.javac.SourceClass.compile(SourceClass.java)
at java.tools.javac.Main.compile(Main.java)
at java.tools.javac.Main.main(Main.java)
./Foo/Bar.java:1: Class Bar already defined in Foo/Bar.java.
public class Bar {
^
./Foo/Bar.java:3: Class Foo.Bar not found in void foo().
Foo.Bar.mumble();
^
error: An exception has occurred in the compiler, please file a bug report (###@###.###).
3 errors
calterra%
calterra% pwd
/home/pelegri/tmp/java/Bug1
calterra% ls
Foo/ classes/
calterra% ls classes
calterra% ls Foo
Bar.java
calterra% cat Foo/Bar.java
public class Bar {
public static void foo() {
Foo.Bar.mumble();
}
}
calterra% /home/kgh/jdk.prebeta.1/bin/javac -d classes Foo/Bar.java
java.lang.NullPointerException
at java.tools.tree.MethodExpression.inline(MethodExpression.java)
at java.tools.tree.ExpressionStatement.inline(ExpressionStatement.java)
at java.tools.tree.CompoundStatement.inline(CompoundStatement.java)
at java.tools.javac.SourceField.inline(SourceField.java)
at java.tools.javac.SourceField.code(SourceField.java)
at java.tools.javac.SourceClass.compileClass(SourceClass.java)
at java.tools.javac.SourceClass.compile(SourceClass.java)
at java.tools.javac.Main.compile(Main.java)
at java.tools.javac.Main.main(Main.java)
./Foo/Bar.java:1: Class Bar already defined in Foo/Bar.java.
public class Bar {
^
./Foo/Bar.java:3: Class Foo.Bar not found in void foo().
Foo.Bar.mumble();
^
error: An exception has occurred in the compiler, please file a bug report (###@###.###).
3 errors
calterra%