2012-06-28 106 views
0

我創建了窗口&一個jar文件中執行一個類文件複製它的Linux,並試圖用下面的命令來執行:拋出java.lang.ClassNotFoundException而從罐子

java -jar Test.jar com.dcat2.messaging.datatransfer.Test 

我得到一個異常如下:

Exception in thread "main" java.lang.NoClassDefFoundError: Test 
Caused by: java.lang.ClassNotFoundException: Test 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
Could not find the main class: Test. Program will exit. 

我正在執行此命令在我有jar文件的位置。

這裏是我的Java代碼:

package com.dcat2.messaging.datatransfer; 

public class Test { 
public static void main(String[] args) { 
    System.out.println("Test App : " + args[0]); 

} 
} 

罐子-tf命令的輸出如下:

jar -tf Test.jar 
META-INF/ 
META-INF/MANIFEST.MF 
com/ 
com/dcat2/ 
com/dcat2/messaging/ 
com/dcat2/messaging/datatransfer/ 
com/dcat2/messaging/datatransfer/Test.class 

誰能幫助嗎?

回答

1
java -cp Test.jar com.dcat2.messaging.datatransfer.Test 

-jar選項啓動所表示作爲主類的jar文件的清單類(和它必須是測試類,在默認的包,你的情況)。

的-cp選項設置爲使用,在這種情況下,只包含測試罐子應用程序的類路徑。

+0

太感謝你了......它的工作:) 還有一個疑問...所以,如果我從一些其他位置執行此命令,我應該如何設置CLASSPATH和執行? – user1407668

+0

'java -cp /path/to/the/Test.jar com.dcat2.messaging.datatransfer.Test'。路徑可以是絕對的或相對的。 –

+0

非常感謝JB Nizet :) – user1407668

相關問題