2013-01-14 95 views
0

我提供了一些源代碼示例,我想測試一些功能。 不幸的是,我與執行程序的問題:java:找不到主要的類:test/test。程序將退出

11:41:31 [[email protected] example]$ javac -g test/test.java 
11:41:52 [[email protected] example]$ java -classpath . test/test 
Exception in thread "main" java.lang.NoClassDefFoundError: test/test (wrong name: test) 
     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: test/test. Program will exit. 
11:42:57 [[email protected] example]$ 

我能做些什麼?

+0

你能提供你的test.java嗎? – hmatar

+1

請提供test.java的源代碼。 – theV0ID

+0

public class test { public static final String USER_NAME =「Test」; public static final String USER_PASSWORD =「TEST」; public static final String RCA_PRODUCT_NAME =「LPM」; 私有靜態CardManagerAccessPoint cardManagerAccessPoint = null; public static void main(String [] args)throws Exception { ExampleInvocation(); } 公共靜態無效ExampleInvocation(){ .... } – user1977050

回答

4

我沒有與Java的很多經驗,但據我所知,你應該使用完全限定的Java類名來運行該文件:

// Assuming that the class is called "test" and is not in any package 
java -classpath test test 

// If "test" is actually in the package "test" : 
java -classpath . test.test 
+0

這個似乎沒問題,部分解決了我的問題。 現在我有新的錯誤: java -classpath。 test.test 線程「main」中的異常java.lang.NoClassDefFoundError:com/gemplus/gxs/api/exception/DeniedAccessException 導致:java.lang.ClassNotFoundException:com.gemplus.gxs.api.exception.DeniedAccessException at java.net.URLClassLoader $ 1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) .... 無法找到主要類:test.test。程序將會退出。 – user1977050

+0

聽起來像你需要第一個命令,而不是第二個命令。 –

1

使用Java運行類你需要使用的命令。而不是/

假設test是一個名爲test的程序包中的類,如您的javac命令所示。

E.g.

java -classpath . test.test 

此外,你應該遵循java的命名約定,並命名你的類以大寫字母開頭。它應該是test.Test以使其更容易類和包

你的編譯是正確的,因爲/應使用使用javac

1

時,您需要運行它作爲區分:

java -classpath test test 

第一test是您的.class文件所在目錄的名稱。第二個test是要運行的Java類的名稱。通常您需要在此處指定完整的軟件包名稱,但由於您的課程位於全局軟件包中,因此只需在此處傳遞test即可。

0

將代碼讀入IDE(eclipse,intellij,netbeans)它可能會突出顯示問題。

看來你的代碼缺少一些簡單的東西(即包名)。

相關問題