开发者

error in java basic test program

开发者 https://www.devze.com 2023-04-08 08:59 出处:网络
$cat JarTest.java package edu.testjava.simple; public class JarTest { public static void main(String args[])
$cat JarTest.java 

package edu.testjava.simple;

public class JarTest
{
    public static void main(String args[])
    {
        System.out.println("Hello World\n");
    }
}


$javac JarTest.java

$java JarTest

I get error:

Exception in thread "main" java.lang.NoClassDefFoundError: JarTest (wrong name: edu/testjava/simple/JarTest)
    at java.lang.ClassLoader.defineClass1(Native Method)
    a开发者_StackOverflowt 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)
Could not find the main class: JarTest.  Program will exit.

Why so?

Anything wrong with package etc?

Thanks!


You need to do:

$ java -cp . edu.testjava.simple.JarTest

You need to specify the name of the class with the full package name (in this case edu.testjava.simple). You don't need .class or .java on the end.

You can also see the answers to How to execute a java .class from the command line.


Yes, it's because of the package. Java enforces the project structure to be the same as the package structure. That means, that the class in the edu.testjava.simple package must be located in the edu/testjava/simple/ directory.

You may either:

  • Remove package declaration (this, however, is only acceptable in such "hello world" cases)
  • Compile the file using javac -d . JarTest.java (this will put the .class file in the appropriate directory) and launch it via java edu.testjava.simple.JarTest
0

精彩评论

暂无评论...
验证码 换一张
取 消