Forward declaration of classes needed when using GCJ?
Andrew W
ajwood@iee.org
Sun Feb 10 17:14:00 GMT 2008
Consider the following two classes placed in files
./net/mydomain/core/ClassA.java and
./net/mydomain/core/ClassB.java respectively:
package net.mydomain.core;
public class ClassA
{
public static void main(String[] args) throws Exception
{
ClassB classb = new ClassB();
}
}
package net.mydomain.core;
public class ClassB
{
}
If I compile this using the 'normal' Java compiler like this:
javac ./net/mydomain/core/ClassA.java ./net/mydomain/core/ClassB.java
it works fine.
Using the GCJ command:
gcj --main=ClassA ./net/mydomain/core/ClassA.java
./net/mydomain/core/ClassB.java
produces the error:
./net/mydomain/core/ClassA.java:8: error: Type ‘ClassB’ not found in the
declaration of the local variable ‘classb’.
ClassB classb = new ClassB();
Under C++ you would use an include of the header file for ClassB and a
forward declaration to solve this, whats the solution for Java classes
under GCJ?
I should point out this is a compile-time syntax error not a linker
error. Compiling ClassB separately and then passing it the .o file wont
solve it. There needs to be some way of forward declaring ClassB inside
ClassA.java.
Thanks
Andrew
More information about the Gcc-help
mailing list