Java NoClassDefFoundError:名称错误

Java NoClassDefFoundError:名称错误,java,noclassdeffounderror,Java,Noclassdeffounderror,我使用Netbeans7.0.1编写了一个java程序来测试RESTful web服务,它在那里运行良好。现在,我编写build.xml文件来编译代码,当我尝试运行生成的.class文件时,总是出现以下异常: Exception in thread "main" java.lang.NoClassDefFoundError: ClientREST (wrong name: clientrest/ClientREST) at java.lang.ClassLoader.defineClas

我使用Netbeans7.0.1编写了一个java程序来测试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.
名称和路径都是正确的,所以你知道我为什么会遇到这个异常吗

线程“main”java.lang.NoClassDefFoundError中出现异常:ClientREST

因此,您将其作为
JavaClientRest
运行。它需要一个没有任何
包的
ClientREST.class


(错误名称:clientrest/clientrest)

嘿,这个类试图告诉你它有一个
包clientrest。您需要从上的包根运行它。向上移动一个文件夹,这样您就位于文件夹中,该文件夹依次包含表示包的
clientrest
文件夹,然后执行
java clientrest.clientrest


您应该不要进入
clientrest
包文件夹并执行
java clientrest

类路径上可能不存在生成类的位置。运行时使用jvm arg-verbose,并检查日志是否正在加载该类


输出还将为您提供有关从何处加载类别的线索,请确保您的类文件位于该位置。

我使用命令行java遇到此错误:

java-cp stuff/src/mypackage测试

其中
Test.java
位于包
mypackage

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

所以它最终会变成这样:


java-cp stuff/src mypackage.Test

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

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

您需要引用类路径,如下所示:

/主页/个人/javastuff/课程

因此,要从命令行运行,完整命令将是-

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

i、 e.上述内容的模板为

java_可执行文件-cp类路径\u类路径中的\u类\u自身\u

这就是我最终在没有环境中的类路径的情况下工作的原因

请尝试以下语法:

假设java文件驻留在这里:
fm/src/com/gsd/FileName.java

因此,您可以使用以下语法运行:

(将当前目录设置为“fm”)


java src.com.gsd.FileName

您的类路径被某个目录关闭,您可能需要发布您的ant脚本或其相关部分。请检查异常消息。他以
ClientREST
的形式运行它,但“错误的名称”消息显示
ClientREST/ClientREST
,这意味着该类实际上位于
ClientREST
包中,因此应以
ClientREST.ClientREST
的形式运行。这在一年后为我节省了大量时间/精力。我爱SE。是的,这里也是。。。我见过java命令以问题中提出的方式使用,但我必须配置什么才能工作?这也帮助我解决了
serialver
的问题!很好的最后一部分,很好的回答!只是在其他论坛上浪费了一整天,什么都没有!