endasil
asked on
Running jar file from command prompt
When i run my program from netbeans, everything works well. But when i try to run it from the command prompt using java -jar JavaApplication3.jar i get the following errors:
Exception in thread "main" java.lang.NoClassDefFoundE rror: com/sun/logging/
LogDomains
at com.sun.appserv.security.P rogrammati cLogin.<cl init>(Prog rammatic
Login.java:85)
at demo.Main.main(Main.java:3 1)
Caused by: java.lang.ClassNotFoundExc eption: com.sun.logging.LogDomains
at java.net.URLClassLoader$1. run(Unknow n Source)
at java.security.AccessContro ller.doPri vileged(Na tive Method)
at java.net.URLClassLoader.fi ndClass(Un known Source)
at java.lang.ClassLoader.load Class(Unkn own Source)
at sun.misc.Launcher$AppClass Loader.loa dClass(Unk nown Source)
at java.lang.ClassLoader.load Class(Unkn own Source)
... 2 more
What do i need to do to make it run from commandline?
Exception in thread "main" java.lang.NoClassDefFoundE
LogDomains
at com.sun.appserv.security.P
Login.java:85)
at demo.Main.main(Main.java:3
Caused by: java.lang.ClassNotFoundExc
at java.net.URLClassLoader$1.
at java.security.AccessContro
at java.net.URLClassLoader.fi
at java.lang.ClassLoader.load
at sun.misc.Launcher$AppClass
at java.lang.ClassLoader.load
... 2 more
What do i need to do to make it run from commandline?
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package demo;
import com.sun.appserv.security.ProgrammaticLogin;
import java.util.Hashtable;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
/**
*
* @author js
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Hashtable env = new Hashtable();
env.put("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
env.put("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
env.put("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
//env.put("org.omg.CORBA.ORBInitialHost", "127.0.0.1");
env.put("org.omg.CORBA.ORBInitialHost", "10.10.22.106");
env.put("org.omg.CORBA.ORBInitialPort", "3700");
ProgrammaticLogin pm = new ProgrammaticLogin();
String user = "dummy";
pm.login(user, "dummy"); //user and password of a user mapped to admin role
InitialContext ctx;
try {
ctx = new InitialContext(env);
javax.swing.JOptionPane.showMessageDialog(null, "Attempting to lookup");
Object ref = ctx.lookup("demo.SB3Remote");
javax.swing.JOptionPane.showMessageDialog(null, "Ey looked up!");
//Object ref = ctx.lookup("java:global/HelloBean/Login2-ejb");
SB3Remote calc = (SB3Remote) PortableRemoteObject.narrow(ref, SB3Remote.class);
javax.swing.JOptionPane.showMessageDialog(null, " " + calc.Hello(user));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
you need to either add the relative location of the dependent jars to your manifest
or specify them on the command line
java -cp JavaApplication3.jar;a.jar ;b.jar demo.Main
or specify them on the command line
java -cp JavaApplication3.jar;a.jar
FInd program dependent jars and set the class path like below and run the program
set classpath=.;c:/yourjars
set classpath=.;c:/yourjars
ASKER
i tried setting the classpath to the dist/lib directory where netbeans copy the libs i add to the project, but no difference.
in the manifest file set the executable class
take a look at ANSWER:
1
http://www.captain.at/programming/java/executable-java-application.php
take a look at ANSWER:
1
http://www.captain.at/programming/java/executable-java-application.php
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
So where is it find the classes now?
ASKER
Under dist/lib as earlier. And i have no idea how it could have worked earlier from netbeans when i did not have appserv-deployment-client. jar added. If i delete any other lib from the project it wont run, but it seem to run fine without that jar when starting from netbeans. That is still a mystery for me.
ASKER
Should also add that it was able to find libraries under the lib folder automatically, so setting class path was not an issue in this case. But thank you all For trying to help! Really appreciated.
ASKER
Should also add that it was able to find libraries under the lib folder automatically, so setting class path was not an issue in this case. But thank you all For trying to help! Really appreciated.
Check the manifest in your jar file, sounds like the jar is specified in there
> Should also add that it was able to find libraries under the lib folder automatically
only jars in ext directories get found automatically :)
only jars in ext directories get found automatically :)
ASKER
Ah right, netbeans adds a manifest to the jar when building that contains lib/ as a classpath. That explains how it finds the files i added there. I can find out that by extracting the files in the jar file with jar -xf javaapplication3.jar. But if i remove the appserv-deployment-client. jar in netbeans, do a rebuild the manifest in the jar file contains no reference to appserv-deployment-client. jar. But it is still able to run it from netbeans.
I searched under my application3 directory for additional .mf files but the only one that exisit is a manifest.mt under the .\build\ direcotry that contains contains:
"
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build
"
So how does it find things from that jar when inside netbeans?
I searched under my application3 directory for additional .mf files but the only one that exisit is a manifest.mt under the .\build\ direcotry that contains contains:
"
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build
"
So how does it find things from that jar when inside netbeans?
check your projects build path
ASKER
Hmm, That should be the build directory under Application3 that i mentioned earlier? It only contains an "empty" manifest.mf file and the .class files. No other manifest.
C:\Users\js\Documents\NetB eansProjec ts\JavaApp lication3\ build>dir /s /w
Volume in drive C has no label.
Volume Serial Number is 5E3A-BF8F
Directory of C:\Users\js\Documents\NetB eansProjec ts\JavaApp lication3\ build
[.] [..] built-jar.properties
[classes] [empty] manifest.mf
2 File(s) 185 bytes
Directory of C:\Users\js\Documents\NetB eansProjec ts\JavaApp lication3\ build
\classes
[.] [..] [demo]
0 File(s) 0 bytes
Directory of C:\Users\js\Documents\NetB eansProjec ts\JavaApp lication3\ build
\classes\demo
[.] [..] Main.class SB3Remote.class
2 File(s) 2 408 bytes
Directory of C:\Users\js\Documents\NetB eansProjec ts\JavaApp lication3\ build
\empty
[.] [..]
C:\Users\js\Documents\NetB
Volume in drive C has no label.
Volume Serial Number is 5E3A-BF8F
Directory of C:\Users\js\Documents\NetB
[.] [..] built-jar.properties
[classes] [empty] manifest.mf
2 File(s) 185 bytes
Directory of C:\Users\js\Documents\NetB
\classes
[.] [..] [demo]
0 File(s) 0 bytes
Directory of C:\Users\js\Documents\NetB
\classes\demo
[.] [..] Main.class SB3Remote.class
2 File(s) 2 408 bytes
Directory of C:\Users\js\Documents\NetB
\empty
[.] [..]
java -jar -cp <path of jar file with classes required in classpath> filename.jar
for reference
http://download.oracle.com/javase/1.4.2/docs/tooldocs/windows/java.html
download the jar file from here
http://www.findjar.com/jar/javax/xml/jaxrpc-api/1.1/jaxrpc-api-1.1.jar.html?all=true