Trying running the current (through JDK 1.2F build, at least) rmic compiler
on an inner remote class and you will get a bunch of error messages that make
it look like rmic is not using the mangled, "outer" version of an inner class
name (i.e. with the $ separating the outer and inner class names) when it should
be, like for the output file names, class declaration and constructor names,
etc. It appears as if it is using ". " instead of "$" as the inner class
qualifier, which is indeed exactly what it is doing.
This can be demonstrated by compiling the attached Java files (for the classes
pkg.A and pkg.Common) and running "rmic" on pkg.Common$AImpl as follows (not
that due to bugid 4049354, you must supply the mangled inner class name on the
command line, which is a user interface issue rather than a functionality
issue):
[terrier] 46 % rmic -keepgenerated -d . pkg.Common\$AImpl
./pkg/Common. AImpl_Stub.java:6: Class pkg.Common already defined in Common.java.
public final class Common. AImpl_Stub
^
./pkg/Common. AImpl_Stub.java:6: '{' expected.
public final class Common. AImpl_Stub
^
./pkg/Common. AImpl_Skel.java:7: Class pkg.Common already defined in Common.java.
public final class Common. AImpl_Skel
^
./pkg/Common. AImpl_Skel.java:7: '{' expected.
public final class Common. AImpl_Skel
^
4 errors
on an inner remote class and you will get a bunch of error messages that make
it look like rmic is not using the mangled, "outer" version of an inner class
name (i.e. with the $ separating the outer and inner class names) when it should
be, like for the output file names, class declaration and constructor names,
etc. It appears as if it is using ". " instead of "$" as the inner class
qualifier, which is indeed exactly what it is doing.
This can be demonstrated by compiling the attached Java files (for the classes
pkg.A and pkg.Common) and running "rmic" on pkg.Common$AImpl as follows (not
that due to bugid 4049354, you must supply the mangled inner class name on the
command line, which is a user interface issue rather than a functionality
issue):
[terrier] 46 % rmic -keepgenerated -d . pkg.Common\$AImpl
./pkg/Common. AImpl_Stub.java:6: Class pkg.Common already defined in Common.java.
public final class Common. AImpl_Stub
^
./pkg/Common. AImpl_Stub.java:6: '{' expected.
public final class Common. AImpl_Stub
^
./pkg/Common. AImpl_Skel.java:7: Class pkg.Common already defined in Common.java.
public final class Common. AImpl_Skel
^
./pkg/Common. AImpl_Skel.java:7: '{' expected.
public final class Common. AImpl_Skel
^
4 errors
- relates to
-
JDK-4049354 rmic requires mangled inner class names on command line
- Closed