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?