Error: Could not find or load main class org.eclipse.jdt.internal.junit.runner.RemoteTestRunner
Caused by: java.lang.ClassNotFoundException: org.eclipse.jdt.internal.junit.runner.RemoteTestRunner
Если я запускаю тот же тест из командной строки, используя
gradle test
он работает нормально.
Также я заметил, что если я удалю следующие две зависимости:
testImplementation group: 'org.apache.tomee', name: 'openejb-cxf-rs', version: '8.0.0'
testImplementation group: 'org.apache.tomee', name: 'arquillian-tomee-embedded', version: '8.0.0'
тесты можно запустить в Eclipse. Очевидно, что в какой-то момент тесты терпят неудачу из-за отсутствия зависимостей.
Похоже, в Eclipse происходит какой-то странный конфликт. Также он работал нормально до декабрьского обновления Eclipse.
Для полноты здесь версии:
- gradle 6.0.1
- Eclipse 2019-12 (4.14.0)
- Jdk 11
- Junit 4.12
Также я заметил следующее. Если я перейду в «Выполнить» -> «Выполнить конфигурации», выберу свой тестовый бегун и «Показать командную строку», я замечу, что когда что-то не работает, путь к классам записывается в файл, тогда как когда он работает, он просто записывается как аргументы командной строки.
Итак, следующее не работает:
C:\Program Files\Java\jdk-11.0.4\bin\javaw.exe -ea -Dfile.encoding=Cp1252 "@C:\projects\provisioning-service\provisioning-service-resource\.temp-ExampleTest-classpath-arg-1578480407549.txt" org.eclipse.jdt.internal.junit.runner.RemoteTestRunner -version 3 -port 58388 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader -loaderpluginname org.eclipse.jdt.junit4.runtime -classNames com.xelion.provisioning.resource.ExampleTest
Ниже
C:\Program Files\Java\jdk-11.0.4\bin\javaw.exe -ea -Dfile.encoding=Cp1252 -classpath "C:\projects\provisioning-service\provisioning-service-resource\target\bin;...manymorehere" org.eclipse.jdt.internal.junit.runner.RemoteTestRunner -version 3 -port 58412 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader -loaderpluginname org.eclipse.jdt.junit4.runtime -classNames com.xelion.provisioning.resource.ExampleTest
Итак, основное отличие заключается в том, что в первом случае путь к классам оценивается из файла
C:\projects\provisioning-service\provisioning-service-resource\.temp-ExampleTest-classpath-arg-1578480407549.txt
а во втором случае выписывается
-classpath "C:\projects\provisioning-service\provisioning-service-resource\target\bin;...
Подробнее здесь: https://stackoverflow.com/questions/596 ... jdt-intern