2015-05-14 73 views
0

我知道这已被问了很多次,但我无法弄清楚。 :(在我的测试线程“主”java.lang.NoClassDefFoundError异常

我有一个大项目和结构是这样的:

Project - build 
     - Config 
     - src 
     - tst 
     - build.xml 
     - webapp 
     - eclipse-bin 

有下TST/COM/MySpace的/网关/内容/的Restlet/SanityTest.java 一个Java文件中java文件:

package com.myspace.gateway.content.restlet; 
... 
public class SanityTest extends ContentGatewayRestletResourceTestCase { 
... 
public static void main() { 
} 
} 

整个项目编译后,SanityTest的类文件是在构建/私营/班/测试/ COM/MySpace的/网关/内容/的Restlet/SanityTest.class

我进入了build/private/classes/tests并运行了“java -cp”。 。com.myspace.gateway.content.restlet.SanityTest”,但得到的NoClassDefFoundError的

请帮我

!PS: 堆栈跟踪:

Exception in thread "main" java.lang.NoClassDefFoundError: com/myspace/gateway/content/ContentGatewayTestCase 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.access$000(Unknown Source) 
    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) 
    at java.lang.ClassLoader.loadClassInternal(Unknown Source) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.access$000(Unknown Source) 
    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) 
    at java.lang.ClassLoader.loadClassInternal(Unknown Source) 
Caused by: java.lang.ClassNotFoundException:   com.myspace.gateway.content.ContentGatewayTestCase 
    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) 
    at java.lang.ClassLoader.loadClassInternal(Unknown Source) 
    ... 24 more 
Could not find the main class: com.myspace.gateway.content.restlet.SanityTest. Program will exit. 
+0

哇我需要重新构造我的代码... – StackJay

+0

即使您在类路径中正确地使用类,也会发生NoClassDefFoundError。原因可能是失败的静态代码或任何异常,而类加载器试图加载类 –

+0

你可以复制完整的错误,包括堆栈跟踪到你的问题?请使用“编辑”按钮,并正确格式化它。 – RealSkeptic

回答

0

你跑

java -cp . com/myspace/gateway/content/restlet/SanityTest 

您应该运行:

java -cp . com.myspace.gateway.content.restlet.SanityTest 

阅读这个问答&一个了解更多详情:


UPDATE

根据堆栈跟踪,问题是Java无法找到ContentGatewayTestCase类。据推测,这是一个类,你的类依赖于。但是,源代码片段显示SanityTest延伸ContentGatewayRestletResourceTestCase。你需要弄清楚如果ContentGatewayTestCase依赖是正确的:

  • 如果是,相应的“.class”文件必须在同一目录下‘SanityTest.class’文件。

  • 无论采用哪种方式,您可能都会遇到编译代码的问题。

+0

我曾经运行java -cp。 com.myspace.gateway.content.resetlet.SanityTest。我在OP中的错误,我会更新它。 – StackJay

相关问题