NoClassDefFoundError:名称错误

thi*_*Big 56 java noclassdeffounderror

我写了一个java程序来使用Netbeans7.0.1测试RESTful Web服务,它在那里工作得很好.现在我编写了build.xml文件来编译代码,当我尝试运行生成的.class文件时,我总是遇到这个异常:

Exception in thread "main" java.lang.NoClassDefFoundError: ClientREST (wrong name: clientrest/ClientREST)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at 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: ClientREST. Program will exit.
Run Code Online (Sandbox Code Playgroud)

名称和路径是正确的,所以任何想法为什么我得到这个例外?

Bal*_*usC 103

线程"main"中的异常java.lang.NoClassDefFoundError:ClientREST

所以,你把它作为java ClientREST.它期待一个ClientREST.class没有任何package.


(错误的名称:clientrest/ClientREST)

嘿,班级试图告诉你它有一个package clientrest;.您需要从包根目录运行它.转到一个文件夹,以便您在文件夹中,该文件夹又包含clientrest表示包的文件夹,然后执行java clientrest.ClientREST.

你应该不会去里面clientrest包文件夹和执行java ClientREST.

  • 这让我在一年后节省了大量的时间/精力.我喜欢SE. (17认同)

Gaʀ*_*ʀʀʏ 9

我使用命令行java遇到了这个错误:

java -cp stuff/src/mypackage Test

其中Test.java驻留在包mypackage.

相反,您需要将类路径-cp设置为基本文件夹,在本例中为src,然后将包前置到文件名.

所以它最终看起来像这样:

java -cp stuff/src mypackage.Test


Sla*_*ead 5

要进一步说明Garry的答复:类路径是类本身所在的基本目录。因此,如果类文件在这里-

/home/person/javastuff/classes/package1/subpackage/javaThing.class

您需要按如下方式引用类路径:

/ home / person / javastuff / classes

因此,要从命令行运行,完整的命令应为-

java -cp / home / person / javastuff / classes package1 / subpackage / javaThing

即上述模板是

java_executable -cp类路径the_class_itself_within_the_class_path

这就是我最终在没有环境的情况下上班的方法