Exception in thread "main" java.lang.NoClassDefFoundError:

On a very current Angstrom with a fresh install of java, the jar files do not work with a defined CLASSPATH:

20:13:30 Mon Jun 24 kensbone 532 /netrexx/examples/rosettacode → java -version
java version “1.6.0_18”
OpenJDK Runtime Environment (IcedTea6 1.8.2) (6b18-1.8)
OpenJDK Zero VM (build 14.0-b16, mixed mode)

19:42:13 Mon Jun 24 kensbone 527 /netrexx/examples/rosettacode → echo $CLASSPATH
/netrexx/lib/NetRexxC.jar:/usr/lib/jvm/java-6-openjdk/lib/tools.jar
19:43:27 Mon Jun 24 kensbone 528 /netrexx/examples/rosettacode → ls -l /netrexx/lib/
total 4296
-rw-r–r-- 1 root root 394113 Jun 24 19:20 NetRexxC.jar
-rw-r–r-- 1 root root 2200813 Jun 24 19:20 NetRexxF.jar
-rw-r–r-- 1 root root 1796149 Jun 24 19:20 ecj-4.2.jar
19:43:56 Mon Jun 24 kensbone 529 /netrexx/examples/rosettacode → java -classpath . HelloWorld
Exception in thread “main” java.lang.NoClassDefFoundError: netrexx/lang/RexxIO
at HelloWorld.main(HelloWorld.nrx:2)
Caused by: java.lang.ClassNotFoundException: netrexx.lang.RexxIO
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334)
… 1 more

But if I put the jar file explicitly in the java command, then it finds all the classes:

19:44:20 Mon Jun 24 kensbone 530 /netrexx/examples/rosettacode → java -classpath .:/netrexx/lib/NetRexxC.jar HelloWorld
Goodbye, World!
19:45:10 Mon Jun 24 kensbone 531 /netrexx/examples/rosettacode → echo $CLASSPATH
/netrexx/lib/NetRexxC.jar:/usr/lib/jvm/java-6-openjdk/lib/tools.jar
19:47:22 Mon Jun 24 kensbone 532 /netrexx/examples/rosettacode →

the “jar” command does not seem to work on angstrom but I looked in the jar file with “jar -tf” on another system and it is in there.

19:41:18 Mon Jun 24 kkleins-imac 1770 /Library/Java/Extensions → jar -tvf NetRexxC.jar
359 Sun Sep 25 23:37:04 EDT 2011 META-INF/MANIFEST.MF
321 Sun Sep 25 23:37:04 EDT 2011 COM/ibm/netrexx/process/NetRexxA.class

394 Sun Sep 25 23:36:58 EDT 2011 netrexx/lang/NotLogicException.class
33336 Sun Sep 25 23:36:58 EDT 2011 netrexx/lang/Rexx.class
2239 Sun Sep 25 23:36:58 EDT 2011 netrexx/lang/RexxIO.class

Is this working as designed? Is it a bug? Do I have to live with it? Should I go to an Ubuntu release?

I put the the mail.jar that I need into /usr/lib/jvm/java-6-openjdk/jre/lib/ext

/usr/lib/jvm/java-6-openjdk/jre/lib/ext > ls
dnsns.jar mail.jar sunjce_provider.jar
localedata.jar meta-index sunpkcs11.jar

Works for me. Hope it works for you.

CEB

It works!!

17:56:08 Tue Jun 25 kensbone 572 ~ → ls /usr/lib/jvm//java-6-openjdk/jre/lib/ext/
NetRexxC.jar dnsns.jar localedata.jar meta-index sunjce_provider.jar sunpkcs11.jar
17:56:39 Tue Jun 25 kensbone 573 ~ → java -classpath /netrexx/examples/rosettacode/ HelloWorld
Goodbye, World!

17:57:44 Tue Jun 25 kensbone 574 ~ → pwd
/home/root
17:59:00 Tue Jun 25 kensbone 575 ~ → ls /netrexx/examples/rosettacode/*.class
/netrexx/examples/rosettacode/HelloWorld.class
17:59:21 Tue Jun 25 kensbone 576 ~ →