I am struggling to get my Java program to run on AIX. I used Eclipse on Windows to create a runnable Jar file, jRams.jar
below. I kept on getting a class not found error, until finally I put all the external libraries in the same directory.
$ ls JAXB2_20081030.jar JAXB2_20110601.jar activation.jar asjava.jar commons-beanutils-1.8.3.jar commons-beanutils-bean-collections-1.8.3.jar commons-beanutils-core-1.8.3.jar commons-codec-1.5.jar commons-collections-3.2.1.jar commons-configuration-1.6.jar commons-digester-2.1.jar commons-jxpath-1.3.jar commons-lang-2.6.jar commons-logging-1.1.1.jar commons-logging-adapters-1.1.1.jar commons-logging-api-1.1.1.jar jRams.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jaxb1-impl.jar jremote.jar jsr173_1.0_api.jar log4j-1.2.16.jar netty-3.2.4.Final.jar $
Still, I get the class not found error.
$ java -jar jRams.jar The java class is not found: com.jbase.jremote.JRemoteException
jremote.jar
definitely contains JRemoteException. Why isn’t this working?
UPDATE
Thank you for your straight-to-the-point answers. I now understand the nature of a java application and a manifest file far better.
Turns out my ftp client was transferring in ASCII mode and not Binary, so the jar files were corrupt. I have learned a great deal, nonetheless.
Advertisement
Answer
When using the -jar
option, you need to specify which jar-files should be on your class path in the manifest file. Just having the required jar files in the same directory won’t do it.
Add a line in your manifest that says:
Class-Path: JAXB2_20081030.jar:JAXB2_20110601.jar:....:netty-3.2.4.Final.jar
or skip the -jar
option and launch using
java -cp JAXB2_20081030.jar:....:netty-3.2.4.Final.jar:jRams.jar pkg.JRamsMain
and it should work fine.
(Note that on *nix systems, as opposed to Windows machines, the jar files in the class paths should be separated using :
instead of ;
.)
Further reading: