File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Beginning Java and the fly likes JAR Absolute Class-Path Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of EJB 3 in Action this week in the EJB and other Java EE Technologies forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "JAR Absolute Class-Path" Watch "JAR Absolute Class-Path" New topic
Author

JAR Absolute Class-Path

Andy Selador
Ranch Hand

Joined: May 02, 2008
Posts: 34
This is something that has been bugging the crap out of me to no end. (Why would they make something so essential so annoying?)

Anyways...

I have a .jar file that needs to list in its manifest class-path an absolute path to another .jar file that is on a different drive (the original .jar file will be copied and used from many locations, meaning a relative path to the other .jar will be difficult, and the other .jar MUST be on the W:\ drive to be accessed anywhere on the network). So, easy, right?

For engine.jar file containing engine\ComputeEngine.class (which is in package engine), and manifest.txt file (included using jar -cvmf manifest.txt engine.jar):

U:\src\engine.jar
- engine
- - ComputeEngine.class
- meta-inf
- - Manifest.mf

manifest.txt:

Main-Class: engine.ComputeEngine
Class-Path: W:\home\andy22286\public_html\classes\compute.jar

(The other .jar file is compute.jar.)

For some reason I get the following error (when using java -jar engine.jar in engine.jar's directory):

Exception in thread "main" java.lang.NoClassDefFoundError: engine/ComputeEngine
Caused by: java.lang.ClassNotFoundException: engine.ComputeEngine
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)

For some reason it cannot find the engine.jar.

Oh, this makes sense...

I already tried:

Class-Path: U:\src\engine.jar W:\home\andy22286\public_html\classes\compute.jar

and just about every variation in between. If I move compute.jar to the same directory and change the class-path to compute.jar, it works just fine. Unfortunately, this is not a solution (using RMI, any client must have access to compute.jar, which means two copies of the same file, one in the local directory and one on the W:\ drive, which does not seem like a good idea).

NOTE: I CANNOT use the -cp or -classpath command with -jar. -cp is ignored when using -jar.

HELP!
[ May 13, 2008: Message edited by: Andy Selador ]
Paul Clapham
Bartender

Joined: Oct 14, 2005
Posts: 18113
    
    8

Originally posted by Andy Selador:
If I move compute.jar to the same directory and change the class-path to compute.jar, it works just fine. Unfortunately, this is not a solution (using RMI, any client must have access to compute.jar, which means two copies of the same file, one in the local directory and one on the W:\ drive, which does not seem like a good idea).
Let me first say that I don't know how to make your path names work, except by suggesting that you use / instead of \ and that you put another / before the drive letter. However I doubt that will fix your problem.

But what's wrong with distributing jar files to computers which need them? I don't think that's such a bad idea.
NOTE: I CANNOT use the -cp or -classpath command with -jar. -cp is ignored when using -jar.
Which suggests another solution: don't use the -jar option at all, use the -cp option only.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: JAR Absolute Class-Path
 
Similar Threads
dynamic code downloading problem with RMI
RMI Concepts
First day with RMI
dynamic code downloading problem with RMI
Access Control Exception