Search code examples
javacompiler-errorscorbaidl

IDL to java (Suns idlj) how to compile generated files?


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 cded 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


Solution

  • 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?