NoClassDefFoundError запускает тест в GradleJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 NoClassDefFoundError запускает тест в Gradle

Сообщение Anonymous »

Я пытаюсь добавить питест в сборку Gradle. Приложение использует Java 11, PowerMock и JUnit 4. Я пробовал Gradle 8.4 и 8.11.1. Это приложение имеет множество настроек в build.gradle, в основном связанных с созданием пути к классам вручную.
Я пытался следовать инструкциям здесь. Конкретно у меня вот это:

Код: Выделить всё

plugins {
...
id 'info.solidsoft.pitest' version '1.15.0'
}
А это:

Код: Выделить всё

pitest {
verbose = true
}
Однако выполнение задачи pitest приводит к ошибке NoClassDefFoundError:

Код: Выделить всё

2024-12-04T14:16:04.342-0600 [ERROR] [system.err] Exception in thread "main" java.lang.NoClassDefFoundError: org/pitest/mutationtest/config/PluginServices

2024-12-04T14:16:04.342-0600 [ERROR] [system.err]         at org.pitest.mutationtest.commandline.MutationCoverageReport.main(MutationCoverageReport.java:35)

2024-12-04T14:16:04.343-0600 [ERROR] [system.err] Caused by: java.lang.ClassNotFoundException: org.pitest.mutationtest.config.PluginServices

2024-12-04T14:16:04.343-0600 [ERROR] [system.err]         at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)

2024-12-04T14:16:04.343-0600 [ERROR] [system.err]         at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)

2024-12-04T14:16:04.343-0600 [ERROR] [system.err]         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)

2024-12-04T14:16:04.343-0600 [ERROR] [system.err]         ... 1 more
Класс PlugnServices, который он ищет, находится в jar-файлеpitest-entry, которого нет в пути к классам. Вывод журнала показывает эту команду (отредактированную для удобства чтения):

Код: Выделить всё

2024-12-04T15:00:02.388-0600 [INFO] [org.gradle.process.internal.DefaultExecHandle] Starting process

'command 'C:\Program files\Java\jdk-11.0.23\bin\java.exe''.

Working directory: C:\Users\myuser\projects\myproj\proj\pin

Command: C:\Program files\Java\jdk-11.0.23\bin\java.exe -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant

-cp

C:\Users\myuser\.gradle\caches\modules-2\files-2.1\org.pitest\pitest-command-line\1.15.0\519ee413fd060273d10215b1a56da2021f0f0aba\pitest-command-line-1.15.0.jar

org.pitest.mutationtest.commandline.MutationCoverageReport
Как видите, здесь присутствует только jar-файлpitest-command-line.
Выполнение зависимостей gradle в этом проекте отражает это :

Код: Выделить всё

pitest - The PIT libraries to be used for this project.

\--- org.pitest:pitest-command-line:1.15.0
У меня есть рабочий проект, который можно сравнить с использованием Spring Boot 3, Java 17 и JUnit 5. Запуск зависимостей gradle создает другое дерево:

Код: Выделить всё

pitest - The PIT libraries to be used for this project.

+--- org.pitest:pitest-command-line:1.15.0

|    \--- org.pitest:pitest-entry:1.15.0

|         +--- org.pitest:pitest:1.15.0

|         \--- org.apache.commons:commons-text:1.10.0

|              \--- org.apache.commons:commons-lang3:3.12.0 -> 3.17.0

\--- org.pitest:pitest-junit5-plugin:1.2.0
Вы можете видеть, что там есть записьpitest. Когда я запускаю самую простую задачу в этом проекте, путь к классам включает все эти jar-файлы. Я понятия не имею, почему они разные. Версии плагинаpitest в обоих проектах одинаковы.
Что мне сделать, чтобы добавить зависимостиpitest?
спасибо

Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-gradle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»