【问题标题】:Cannot run junit test in eclipse, ClassNotFoundException: org.eclipse.jdt.internal.junit.runner.RemoteTestRunner无法在 Eclipse 中运行 junit 测试,ClassNotFoundException: org.eclipse.jdt.internal.junit.runner.RemoteTestRunner
【发布时间】:2020-01-07 21:36:36
【问题描述】:

当我尝试在 eclipse 中对使用 gradle 创建的项目运行 junit 测试时,我在 eclipse 控制台中收到以下错误

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 12 月更新之前它也运行良好。

为了完整性,这里的版本:

  • gradle 6.0.1
  • Eclipse 2019-12 (4.14.0)
  • JDK 11
  • Junit 4.12

今天我还尝试安装旧版本的 Eclipse (2019-09),并使用相同的设置运行测试。

我还注意到以下内容。如果我转到 Run->Run Configurations,选择我的测试运行器并“显示命令行”,我注意到当事情不工作时,类路径被写入文件中,而当它工作时,它只是作为命令行参数写入。

所以以下方法不起作用:

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;...

【问题讨论】:

    标签: java eclipse gradle junit


    【解决方案1】:

    看起来像一个 Eclipse 错误,请参阅此处了解详细信息

    https://bugs.eclipse.org/bugs/show_bug.cgi?id=558495

    我添加了以下下载端

    https://download.eclipse.org/eclipse/updates/4.15-I-builds/I20200105-1800/

    并更新了“Eclipse Java 开发工具”

    这解决了问题。

    【讨论】:

    猜你喜欢
    • 2015-08-07
    • 2010-09-30
    • 2013-10-02
    • 2018-12-26
    • 1970-01-01
    • 2017-11-21
    • 2021-07-03
    • 2011-07-01
    • 2012-06-02
    相关资源
    最近更新 更多