I try to compile GNU Classpath with GCJ (3.4 and 4.0) and stumble over
the following oddity (actually hundreds of them):
../gnu/java/rmi/RMIMarshalledObjectOutputStream.java:52: Fehler: Class
ïgnu.java.rmi.RMIMarshalledObjectOutputStreamï doesn't define the abstract method ïvoid
org.omg.CORBA.portable.OutputStream.write_wstring(java.lang.String)ï from class
ïorg.omg.CORBA.portable.OutputStreamï. This method must be defined or class
ïgnu.java.rmi.RMIMarshalledObjectOutputStreamï must be declared abstract.
public class RMIMarshalledObjectOutputStream extends RMIObjectOutputStream
It looks like GCJ is confusing java.io.OutputStream (that is what
gnu.java.rmi.RMIMarshalledObjectOutputStream is derived from) with org.omg.CORBA.portable.OutputStream.
How is that possible? The code looks correct to me, and jikes seems to have no problem with it. Even if I
fully qualify all ObjectOutputStream references it fails. This is very odd.
I have the following proposals how to handle this:
1. don't import CORBA stuff in the GCJ tree until GCJ is fixed for these issues and add a configure option
in GNU Classpath --without-corba for those (like me) who would like to use GCJ for compiling Classpath.
or
2. implement a workaround (oh no, not another one! ;-) ) for GCJs bugs. In this case I would think
temporarily renaming the CORBA ObjectOutputStream (and other affected clash-names) would do. This is of
course very ugly, against the specs and whatnot.
Any other suggestions?