• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 844
  • Last Modified:

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.NoClassDefFoundError: com/sun/logging/
        at com.sun.appserv.security.ProgrammaticLogin.<clinit>(Programmatic
        at demo.Main.main(Main.java:31)
Caused by: java.lang.ClassNotFoundException: com.sun.logging.LogDomains
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 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", "");
        env.put("org.omg.CORBA.ORBInitialHost", "");
        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) {

Open in new window

1 Solution
Gurvinder Pal SinghCommented:
you need to add the classpath to the following command
java -jar -cp <path of jar file with classes required in classpath> filename.jar

for reference

download the jar file from here
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
FInd program dependent jars and set the class path like below and run the program

set classpath=.;c:/yourjars

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

endasilAuthor Commented:
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:
endasilAuthor Commented:
Found the problem, i needed to add the appserv-deployment-client.jar to the project. Strange that it worked from the ide without this.
So where is it find the classes now?
endasilAuthor Commented:
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.
endasilAuthor Commented:
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.
endasilAuthor Commented:
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 :)
endasilAuthor Commented:
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?
check your projects build path
endasilAuthor Commented:
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\NetBeansProjects\JavaApplication3\build>dir /s /w
 Volume in drive C has no label.
 Volume Serial Number is 5E3A-BF8F

 Directory of C:\Users\js\Documents\NetBeansProjects\JavaApplication3\build

[.]                    [..]                   built-jar.properties
[classes]              [empty]                manifest.mf
               2 File(s)            185 bytes

 Directory of C:\Users\js\Documents\NetBeansProjects\JavaApplication3\build

[.]    [..]   [demo]
               0 File(s)              0 bytes

 Directory of C:\Users\js\Documents\NetBeansProjects\JavaApplication3\build

[.]               [..]              Main.class        SB3Remote.class
               2 File(s)          2 408 bytes

 Directory of C:\Users\js\Documents\NetBeansProjects\JavaApplication3\build

[.]  [..]
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now