wood burning stoves 2.0*
The moose likes Java in General and the fly likes Jar Using Other Jar Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "Jar Using Other Jar" Watch "Jar Using Other Jar" New topic
Author

Jar Using Other Jar

robin singal
Ranch Hand

Joined: Jul 18, 2007
Posts: 102
Hi

I want to know is it possible to use a Single jar file which contains classes that uses other jar that helps for DB connection, logging. And the other jar should be in the same single jar. Or there might be a way if i extract all the jar into a single directory and append all the manifest info of all jars into single manifest file.

Thanks


Life is short play hard.
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 41110
    
  45
The standard classloader can't handle jar files inside of other jar files. But if you ship several jar files, then the manifest of the one containing the main class can reference the other jar files. See http://java.sun.com/docs/books/tutorial/deployment/jar/manifestindex.html particularly "Adding Classes to the JAR File's Classpath".


Ping & DNS - my free Android networking tools app
robin singal
Ranch Hand

Joined: Jul 18, 2007
Posts: 102
Hi

First i would explore the possibilities of manifest file then i would post weather I got it worked

Thanks
robin singal
Ranch Hand

Joined: Jul 18, 2007
Posts: 102
This is what i found useful:

Note : The Class-Path header points to classes or JAR files on the local network, not JAR files within the JAR file or classes accessible over internet protocols. To load classes in JAR files within a JAR file into the class path, you must write custom code to load those classes. For example, if MyJar.jar contains another JAR file called MyUtils.jar, you cannot use the Class-Path header in MyJar.jar's manifest to load classes in MyUtils.jar into the class path.


What custom code i have to write ??

Thanks
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 41110
    
  45
You'd need to write a ClassLoader implementation that knows how load classes from jar files inside of jar files. That's not rocket science, but not for the faint of heart (or beginners) either.

Start by using multiple jar files that are referenced from a single manifest, and see if that works for you.
Bert Bates
author
Sheriff

Joined: Oct 14, 2002
Posts: 8803
    
    5
whoa!

I don't know about you guys, but this seems like at least an intermediate discussion to me!

off it goes...


Spot false dilemmas now, ask me how!
(If you're not on the edge, you're taking up too much room.)
robin singal
Ranch Hand

Joined: Jul 18, 2007
Posts: 102
Start by using multiple jar files that are referenced from a single manifest, and see if that works for you.


ya i have done that, the other jar files were placed outside the executable jar in lib folder and i gave that information in the manifest file. It runs fine.

That's not rocket science, but not for the faint of heart (or beginners) either.


I am not a beginner now as Bert has moved it to intermediate ...
Atleast i can try ,How can i write a classloader implementation ??
From where to start ?

Thanks
Uli Hofstoetter
Ranch Hand

Joined: Nov 24, 2006
Posts: 57
Another approach might be using maven with the assembly or shade plugin.

These plugins will build jars with all dependencies included.

Reagrds,
Uli


SCEA5, Certified ScrumMaster
robin singal
Ranch Hand

Joined: Jul 18, 2007
Posts: 102
Ya I would see to it & would ensure that the thread moves to the expert level.

Thanks
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Jar Using Other Jar
 
Similar Threads
some JAR problems.
Problem running an executable jar
jar inside jar.
Maven:- writing in manifest
JAR-files