Search code examples
javacompilation

How do I run Java .class files?


I've compiled a HelloWorld program, and I'm using the command prompt to run it. The .class file is named HelloWorld2.class

The file is located in C:\Users\Matt\workspace\HelloWorld2\bin Here's what I'm getting when I go to command prompt, and type "Java HelloWorld2" :

C:\Users\Matt>Java HelloWorld2
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld2
Caused by: java.lang.ClassNotFoundException: HelloWorld2
        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)
Could not find the main class: HelloWorld2.  Program will exit.

I was expecting to see a HelloWorld printed out. What am I doing wrong? I have the JDK installed.


Solution

  • If your class does not have a package, you only need to set the classpath to find your compiled class:

    java -cp C:\Users\Matt\workspace\HelloWorld2\bin HelloWorld2

    If your class has a package, then it needs to be in a directory corresponding to the package name, and the classpath must be set to the root of the directory tree that represents the package.

    // Source file HelloWorld2/src/com/example/HelloWorld2.java
    package com.example;
    ...
    
    Compiled class file: HelloWorld2/bin/com/example/HelloWorld2.class
    
    $ java -cp HelloWorld2/bin com.example.HelloWorld2