我正在尝试使用下面的代码从main方法中执行我的testng.xml文件。但是得到了一个NoClassDefFoundError。你知道是什么导致了这个问题吗?
public static void main( String[] args )
{
TestNG testng = new TestNG();
List<String> suites = Lists.newArrayList();
suites.add("testng.xml");
testng.setTestSuites(suites);
testng.run();
}
Exception in thread "main" java.lang.NoClassDefFoundError: org/testng/TestNG
at com.automation.app.App.main(App.java:21)
Caused by: java.lang.ClassNotFoundException: org.testng.TestNG
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more发布于 2019-02-14 11:59:05
我能够通过使用“maven-程序集-插件”和“maven-依赖-插件”来解决这个问题,然后在resources/meta文件夹中创建manifest.mf文件并添加以下信息。
Manifest-Version: 1.0
Class-Path: .
Main-Class: {PROVIDE THE MAIN CLASS HERE}发布于 2019-02-13 15:28:09
这里的问题是,在执行jar时,您缺少了类路径上的依赖库,因为jar只有来自您项目的类。
你在这里需要的不是
或
例如java -cp your.jar:lib/*
其中libs/*是通向依赖JAR的路径。
我推荐选项一,因为如果jar中包含所有依赖项,您可以在任何地方运行该jar。
发布于 2022-06-14 11:54:53
它与Testng库有关。添加库:右键单击项目->构建路径->配置生成路径->Java构建路径-> library->添加库->选择TestNG ->应用和关闭。
对我起作用了。
https://stackoverflow.com/questions/54672809
复制相似问题