aspose file tools*
The moose likes Ant, Maven and Other Build Tools and the fly likes Including a jar within a jar Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Engineering » Ant, Maven and Other Build Tools
Bookmark "Including a jar within a jar" Watch "Including a jar within a jar" New topic
Author

Including a jar within a jar

Russell Wurth
Greenhorn

Joined: Jul 12, 2004
Posts: 20
I am trying to package a class file with 2 jar files that are in my classpath.

CLASSPATH=c:\java\include\ar.jar
Working directory (source/class file) : c:\eclipse\workspace\MyProject

Within my working directory, I am able to compile and run Test.java, creating Test.class. Both files are in my working directory.

Using Ant, I want a single jar that will include 'ar.jar' and 'Test.class' to be run on another environment. I would like to leave 'ar.jar' in the directory that it is currently in.

Here is my build.xml





The problem is that when I run 'java -jar MyJarFile.jar', I get a NoClassDefFoundError since it is not finding 'ar.jar'. The 'ar.jar' file is packaged in MyJarFile.jar, but I cannot figure out the correct Class-Path to reference 'ar.jar'.

Any advice?
Edward Kenworthy
Ranch Hand

Joined: Oct 05, 2003
Posts: 66
You can't do what you're trying to do. You could uncompress the jars you want to include and then re-jar them into the one jar (bad idea by the way: what happens when a new version of those jars becomes available?).

Another option is to simply ship your dependent jars in a subdirectory of your application (eg lib/) and then point your application (easiest would be to set the class-path in your Manifest file). That's what I'd do.

Edward
jerry conosm
Greenhorn

Joined: Sep 09, 2003
Posts: 10
You should specify each jar files you used in the manifest file. For example, if you have 2 jar files a, b, you should have

Class-Path: a.jar b.jar

entry in the manifest file. Take note that they are separated by space.

Try replacing your class path entries in your script with this:

<attribute name="Class-Path" value= "java/include/.jar">
jerry conosm
Greenhorn

Joined: Sep 09, 2003
Posts: 10
oooops! what I mean from above is

<attribute name="Class-Path" value= "java/include/ar.jar">
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
What you are trying to do isn't supported by standard java, as far as I know. You can use http://one-jar.sourceforge.net/ to do so, though.


The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
 
 
subject: Including a jar within a jar
 
Similar Threads
help to includes jar files in classpath of a jar file
could not find the main class
Defining Ant build.xml java properties files for a run targer
[Ant]Does not run java task
HibernateException: JDBC Driver class not found: oracle.jdbc.driver.OracleDriver