This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
gcj question.
- From: "R. Clayton" <clayton at cebatech dot com>
- To: gcc-help at gcc dot gnu dot org
- Date: Wed, 17 Jan 2007 17:36:20 -0500
- Subject: gcj question.
I would like to run this code
$ cat main.java
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
class main {
public static void main(String [] args) {
try {
final FileOutputStream output = new FileOutputStream("storage");
final ObjectOutputStream objectOut = new ObjectOutputStream(output);
final widget w = new widget();
objectOut.writeObject(w);
}
catch (Exception e) { System.err.println(e + " excption caught."); }
}
}
$ cat widget.java
import java.io.Serializable;
import java.util.LinkedList;
public class widget
implements Serializable {
}
$
under gcj but am not having much luck:
$ echo $CLASSPATH
$ gcj --version
gcj (GCC) 4.1.1 20060525 (Red Hat 4.1.1-1)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ rm *.o
$ gcj -c widget.java main.java
$ gcj -o a.out --main=main *.o
$ ./a.out
Exception in thread "main" java.lang.NoClassDefFoundError:
org.metastatic.jessie.provider.SRPTrustManagerFactory
at java.lang.Class.initializeClass(libgcj.so.7)
at java.lang.Class.forName(libgcj.so.7)
at java.lang.Class.forName(libgcj.so.7)
at org.metastatic.jessie.provider.Jessie.class$(jsse-1.0.1.jar.so)
at org.metastatic.jessie.provider.Jessie$1.run(jsse-1.0.1.jar.so)
at java.security.AccessController.doPrivileged(libgcj.so.7)
at org.metastatic.jessie.provider.Jessie.<init>(jsse-1.0.1.jar.so)
at java.lang.Class.newInstance(libgcj.so.7)
at java.security.Security.loadProviders(libgcj.so.7)
at java.security.Security.<clinit>(libgcj.so.7)
at java.lang.Class.initializeClass(libgcj.so.7)
at java.security.Security.getProviders(libgcj.so.7)
at java.security.MessageDigest.getInstance(libgcj.so.7)
at java.io.ObjectStreamClass.getClassUID(libgcj.so.7)
at java.io.ObjectStreamClass.<init>(libgcj.so.7)
at java.io.ObjectStreamClass.lookupForClassObject(libgcj.so.7)
at java.io.ObjectOutputStream.writeObject(libgcj.so.7)
at main.main(a.out)
Caused by: java.lang.ClassNotFoundException: gnu.crypto.sasl.srp.PasswordFile
not found in
gnu.gcj.runtime.BootClassLoader{urls=[file:/usr/share/java/gcj-endorsed/jsse.jar,file:/usr/share/java/gcj-endorsed/bcprov-1.34.jar,core:/], parent=null}
at java.net.URLClassLoader.findClass(libgcj.so.7)
at java.lang.ClassLoader.loadClass(libgcj.so.7)
at java.lang.ClassLoader.loadClass(libgcj.so.7)
at java.lang.Class.initializeClass(libgcj.so.7)
...17 more
$
On the other hand, java handles it:
$ rm -f *.class storage
$ javac *.java
$ java main
$ ls -l storage
-rw-r--r-- 1 clayton clayton 27 Jan 17 17:27 storage
$ java -version
java version "1.4.2_03"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02)
Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode)
$
I have not yet discovered a useful google query for this problem. What is a
more direct pointer to more information or, better yet, a description of this
problem and its fix?