Reputation: 6657
I want to create one executable JAR file which contains other JAR libraries. But when I execute the JAR, it gives an error of class path problem.
How do I solve the class-path problem?
Upvotes: 8
Views: 23974
Reputation: 398
I think you can try it like this;
Here is a simple example for you question. First, we assume we have a project directory like D:\javademo
. In this working directory we then create a main class HelloWorld.java and thtat contains our other JAR files, like commons-lang.jar
. Now, we must archive our main classes HelloWorld and commons-lang.jar into test.jar file.
First we must edit our manifest file so that we can specify our class-path and main-class like this:
Manifest-Version: 1.0
Created-By: tony example
Class-Path: test.jar commons-lang.jar
Main-Class: org.tony.java.HelloWorld
We named this file test.mf
. Now we use the jar
command to generate our JAR file like this:
jar -cvfm test.jar test.mf -C ./ .
Then it will generate the JAR file test.jar
. You can use this command to run this main class using java command:
java -jar test.jar
That is my solution. I hope it give you something helpful...
Upvotes: 14
Reputation: 958
You should use third-party libraries for it. For example, OneJar. You'll have to build the final JAR file using the OneJar tool (like Ant task) instead of standard JRE's tools.
On running such a JAR file, OneJar's service class is launched instead of yours. This class then loads JAR files packed inside, as well as your classes, and run your main class.
There are similar questions and answers already. For example: Stack Overflow question Easiest way to merge a release into one JAR file.
Upvotes: 0