I have an .*idl interface:
interface Class1;
interface Class2
{
typedef sequence<Class1> vector;
Class2 create();
};
interface Class1
{
typedef sequence<Class2> vector;
Class1 create();
};
I compile it like this:
idlj -fclient interface.idl
and it gives me files:
Class1Helper.java Class2.java interface.idl
Class1Holder.java _Class1Stub.java Class2Operations.java
Class1.java Class2Helper.java
Class1Operations.java Class2Holder.java _Class2Stub.java
and catalogs:
Class1Package Class2Package
in Class1Package I have : vectorHelper.java vectorHolder.java
and in Class2Package I have: vectorHelper.java vectorHolder.java
. When I cd
ed to Class1Package and tried to compile java files (with `javac *.java) I got errors:
vectorHelper.java:3: '.' expected import Class2; ^ vectorHelper.java:3: ';' expected import Class2; ^ vectorHelper.java:4: class, interface, or enum expected import Class2Helper; ^ vectorHolder.java:3: '.' expected import Class2; ^ vectorHolder.java:3: ';' expected import Class2; ^ 5 errors Class1Package$ javac *.java vectorHelper.java:3: '.' expected import Class2; ^ vectorHelper.java:3: ';' expected import Class2; ^ vectorHelper.java:4: class, interface, or enum expected import Class2Helper; ^ vectorHolder.java:3: '.' expected import Class2; ^ vectorHolder.java:3: ';' expected import Class2; ^ 5 errors
What's wrong?
My whole project: http://www41.zippyshare.com/v/32339153/file.html
The reason for the error is explained here (look at accepted answer), basically from java 4 on you can no longer refer to a class (using an import statement) in an unnamed package (aka. default package) from a named package.
Modify your IDL compiler to have a module, is there a reason you don't have your interfaces inside a module already?