Noman Arain
Noman Arain

Reputation: 1162

No main found when executing jar

http://pastebin.com/1btVw8Cb

There are two classes in the above code.

So above is my code which is working fine when I hit run in Eclipse, runs fine in Netbeans as well.

I am trying to create a standalone application, a jar file.

The error I get when I double my jar is:

Could not find the main class: NewJFrame. Program will exit. I get the following from the command promt:

E:\Java Programs\Eclipse Workspace\test3\src\test3>java testT.jar
Exception in thread "main" java.lang.NoClassDefFoundError: testT/jar
Caused by: java.lang.ClassNotFoundException: testT.jar
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: testT.jar.  Program will exit.

I followed the command from here: "Could not find the main class: XX. Program will exit." So this is what I am typing in the command promt to create my jar:

E:\Java Programs\Eclipse Workspace\test3\src\test3>jar cfm MyJar.jar manifest.tx
t *.class SINGLE.TXT

https://i.sstatic.net/ncm1q.jpg

Some shots above I took to show the process.

So I think the problem could be error when I do javac? But it builds fine and runs fine in netbeans and eclipse >< Please help.

Upvotes: 0

Views: 867

Answers (3)

HackerGK
HackerGK

Reputation: 370

Add

Main-class: Splash

part to Manifest file. set Main class name instead Splash

That will work...

Upvotes: 0

Noman Arain
Noman Arain

Reputation: 1162

it is now working. I have not changed anything, maybe the memory got curroupted and that is why it was giving me problems. I think restart the computer is what fixed it. But yea, I don't know for sure what was wrong, though it is working fine now. So thank you for your help guys

Upvotes: 0

Mike Samuel
Mike Samuel

Reputation: 120526

You need to use the -jar flag.

java -jar MyJar.jar

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

JAR Files as Applications

You can run JAR-packaged applications with the Java interpreter. The basic command is:

java -jar jar-file

The -jar flag tells the interpreter that the application is packaged in the JAR file format. You can only specify one JAR file, which must contain all the application-specific code.

and http://docs.oracle.com/javase/tutorial/deployment/jar/modman.html explains how to put a manifest in the jar.

The m option indicates that you want to merge information from an existing file into the manifest file of the JAR file you're creating.

Upvotes: 2

Related Questions