2013-08-01 81 views
2

我有這段代碼,它使用主方法中的XML文件調用testNG。我想通過以下調用命令行該類文件:Java類文件在通過命令行運行時無法加載testng類

java -cp My_Automation.jar com.mycomp.test.sanity.InvokeTestNGTest 

然而,這種失敗,出現以下消息:

Exception in thread "main" java.lang.NoClassDefFoundError: org/testng/ITestListener 

我試圖通過Eclipse中運行這個,這工作完全正常,但從命令行界面調用時會失敗。所有測試JAR都放在classpath中。我不明白這種差異。

這裏是我的代碼:

package com.mycomp.test.sanity; 

import java.util.ArrayList; 
import java.util.List; 
import org.testng.TestNG; 
import org.testng.TestListenerAdapter; 


public class InvokeTestNGTest { 
    public static void main(String[] args) { 


     List<String> xmlFileList = new ArrayList(); 
     xmlFileList.add("ILIO_testNG.xml"); 
     TestListenerAdapter tla = new TestListenerAdapter(); 
     TestNG testng = new TestNG(); 

     testng.setTestSuites(xmlFileList); 
     testng.addListener(tla); 
     testng.run(); 

     } 

} 
+1

添加到-cp testng jar –

+0

這是第一篇文章的另一個很好的例子。歡迎來到SO! – Brian

回答

1

除非你所有的jar文件在同一目錄中,則需要指定要在classpath每個罐子的路徑。你還需要確保你不會錯過任何其他的JAR文件。

java -cp "/path/to/project/My_automation.jar; /path/to/project/libs/testng-5.5.jar" ... 
0

請提供testng.jar在classpath從命令提示符下運行一段時間。

java -cp "My_Automation.jar;testng-5.5.jar" com.mycomp.test.sanity.InvokeTestNGTest 

感謝

+0

我試過和你提到的一樣。仍然發生相同的錯誤 – user2640248

+0

意識到我已經將它導出爲jar而不是可執行jar。這不是爲項目拾取依賴jar。感謝指針。 – user2640248

0

哪個jar包含org.testng.ITestListener類不在您的運行時類路徑上。 Sergii Zagriichuk提到了testng.jar?

0

認識到我已經將它導出爲jar而不是可執行jar。這不是爲項目拾取依賴jar。感謝指針