2012-02-21 71 views
0

我想在我的shell腳本來運行使用此命令一個罐子 -類路徑錯誤 - 無法找到主類和log4j的

java -Dlog4j.configuration=path/to/log4j.properties -classpath path/to/log4j.jar:path/to/another.jar -cp my/jarfile/to/run/myjar.jar com.xyz.TestSuiteRunner CREATE_4_SL 

但是當我運行它,我得到的錯誤如圖所示 -

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger 

at com.xyz.TestSuiteRunner.<clinit>(TestSuiteRunner.java:27) 
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    ... 1 more 
Could not find the main class: com.xyz.TestSuiteRunner. Program will exit. 

在引用其他類似帖子後,我知道我可以使用清單文件創建可運行jar文件,但我不想這樣做。任何人都可以讓我知道我在哪裏錯了嗎?

回答

1

您既有-classpath也有-cp開關; -cp只是-classpath的縮寫,您不能擁有其中的一個以上。最後一個是「堅持」的,所以在第一個-classpath開關中命名的任何類都不會被找到。您需要將這些參數合併爲一條長路徑;即

-classpath path/to/log4j.jar:path/to/another.jar:my/jarfile/to/run/myjar.jar 

關於無法找到主類的錯誤是有點紅鯡魚;該類很明顯,它不能被初始化,因爲它的依賴關係沒有找到。

+0

工作。謝謝 – 2012-02-21 05:23:17

相關問題