2015-05-14 72 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

相關問題