通过命令行运行时,Java类文件无法加载testng类

时间:2013-08-01 17:23:35

标签: java eclipse jar testng

我有这段代码,它使用main方法中的XML文件调用testNG。我试图通过以下命令从命令行调用此类文件:

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

但是,这会失败并显示以下消息:

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

我已经尝试通过Eclipse运行它,它工作得非常好,但是从命令行界面调用它时会失败。所有测试JAR都放在类路径中。我不明白这种差异。

这是我的代码:

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();

        }

}

4 个答案:

答案 0 :(得分:1)

除非所有jar文件都在同一目录中,否则您需要指定类路径中每个jar的路径。您还需要确保您没有遗漏任何其他JAR文件。

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

答案 1 :(得分:0)

从命令提示符运行时,请在类路径中提供testng.jar。

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

由于

答案 2 :(得分:0)

哪个jar包含org.testng.ITestListener类不在运行时类路径上。 Sergii Zagriichuk提到了一个testng.jar?

答案 3 :(得分:0)

意识到我已经将它导出为jar而不是可执行jar。这并没有拿起项目的依赖jar。感谢指点