Reputation: 3284
I am trying to run a jar file I made, I keep getting this error:
java -jar Client.jar
Exception in thread "main" java.lang.NoClassDefFoundError: Client (wrong name: Client/Client)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
I used this command
jar cmf Client.mf Client.jar Client.class Client.java Client
where Client.mf is:
Manifest-Version: 1.0
Main-Class: Client
The last argument is a folder containing all the depency classes:
ButtonListen.class
ButtonListener.class
Client$1.class
Client$2.class
Client$3.class
NewPage.class
NewPage.java
NextPage.class
NextPage.java
OptIPDemo$1.class
OptIPDemo$2.class
OptIPDemo$3.class
OptIPDemo$4.class
OptIPDemo$5.class
OptIPDemo$Doc$1.class
OptIPDemo$Doc.class
OptIPDemo.class
OptIPDemo.java
ServerStats.class
ServerStats.java
blue2.jpeg
blue3.JPG
For whatever reason it is giving me a NoClassDefFoundError, but I dont know why, or how to resolve it.
Upvotes: 0
Views: 3607
Reputation: 33936
You either need to compile with -d
javac -d classes
...or move all your classes into a classes/Client directory
mkdir classes/Client
mv *.class classes/Client
Then, adjust your manifest to use a package-qualified Main-Class:
Main-Class: Client.Client
And finally, build the jar so that the classes are located within the Client directory of the jar:
cd classes
jar cmf ../Client.mf ../Client.jar *
Upvotes: 1
Reputation: 4122
Client.class seems to be missing. And I would get into the habit of using packages to organize your code.
Upvotes: 2