androidGenX
androidGenX

Reputation: 1158

Error while running jar file on system

I am having a java file like the following:

import org.xBaseJ.DBF;
import org.xBaseJ.fields.CharField;
import org.xBaseJ.fields.NumField;
import org.apache.log4j.*;

public class Example2 {

public static void main(String args[]){
..........
}
}

I have created the this to 'Example2.jar' file to run by following the steps below:

1) javac Example2.java
2) java Example2
3) This will produce a .class file needed for the JAR file.

4) Next create a manifest file (saved using the extension .txt) using the text editor and input        the following

Main-Class: Example2
or whatever your file's name is.

5) Next create the JAR file using this code:

jar cfe Example2.jar Example2 Example2.class

After step 5, I got a jar file named 'Example2.jar' . I tried to run the jar file using the following command:

java -jar HelloWorld.jar

But I am getting the following Errors:

Exception in thread "main" java.lang.NoClassDefFoundError: org/xBaseJ/DBF          at            Example2.main(Example2.java:14)                                 Caused by: java.lang.ClassNotFoundException: org.xBaseJ.DBF                        at java.net.URLClassLoader$1.run(URLClassLoader.java:372)                  at java.net.URLClassLoader$1.run(URLClassLoader.java:361)                  at java.security.AccessController.doPrivileged(Native Method)              at java.net.URLClassLoader.findClass(URLClassLoader.java:360)              at java.lang.ClassLoader.loadClass(ClassLoader.java:424)                   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)           at java.lang.ClassLoader.loadClass(ClassLoader.java:357)                   ... 1 more                                                         

I did not understand, what is the reason? Please guide me?

Upvotes: 3

Views: 2969

Answers (2)

Kishan Bheemajiyani
Kishan Bheemajiyani

Reputation: 3439

Well one thing is that when u are creating Jar just look this menifest first that is what can help for the including the External Libraries.

http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html

While creating and giving chages to the menifest just have to run that class with the configuration

http://docs.oracle.com/javase/tutorial/deployment/jar/modman.html

so seeing both of that link.

just look this Example.

run your java and get class file

javac Test.java

and if u having some other external libraries working then do like this.

javac -classpath xxx.jar Test.java 

and see the menifest configuration and make that file with external changes like this.

menifest.txt
Main-Class: Test
Class-Path: xxx.jar xxxx.jar

then u need to make jar file like this. run this command

jar cfm jarName.jar manifest.txt Test.class

and hence we done u can have jarfile in that same path.

Upvotes: 2

allTwentyQuestions
allTwentyQuestions

Reputation: 1240

The error you're seeing is caused by having an incorrect classpath. I'm assuming that when you compiled the class, you somehow provided a classpath (either by passing the '-classpath' arg or by setting the 'CLASSPATH' environment variable). The problem is that the compilation classpath is separate from the runtime classpath. So, you just need to ensure that all of the dependencies (other jar files, most likely) that were on the classpath when you compiled the class are also added to the classpath when running the jar. For a jar file, this is typically done by adding a 'Class-Path'header to the manifest.

An alternative method would be to specify the classpath using either the command line arg or the environment variable and include your Example2.jar file in that classpath, and run java Example2 (without the '-jar').

Upvotes: 0

Related Questions