Получение java.lang.ClassNotFoundException: org.testng.TestNG Ошибка - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь выполнить свой файл testng.xml из метода main, используя приведенный ниже код.Но получаю 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

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Мне удалось решить эту проблему с помощью «maven-assembly-plugin» и «maven-dependency-plugin», затем создать файл manifest.mf в папке resources / meta-inf и добавить следующую информацию.

Manifest-Version: 1.0
Class-Path: .
Main-Class: {PROVIDE THE MAIN CLASS HERE}
0 голосов
/ 13 февраля 2019

Проблема здесь в том, что вы пропускаете зависимые библиотеки в вашем пути к классам, когда выполняете jar, потому что jar содержит только классы из вашего проекта.

Здесь вам нужно либо

  1. сборка исполняемого фляги со всеми зависимостями

или

укажите зависимости в командной строке

например, java -cp your.jar:lib/*

, где libs/* - это путь к JAR-файлам вашей зависимости

Я быпорекомендуйте первый вариант, так как вы можете запустить этот jar где угодно, если в нем есть все зависимости, включенные в jar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...