Gradle JRE 与 JDK 请从您的 JDK 添加 lib/tools.jar

2024-01-01

我正在使用 gradle 运行 java 测试。 这是我的例外:

java.lang.RuntimeException: java.lang.IllegalStateException: Unable to load Java agent; please add lib/tools.jar from your JDK to the classpath
at org.powermock.modules.agent.PowerMockClassRedefiner.redefine(PowerMockClassRedefiner.java:59)
at org.powermock.modules.agent.support.PowerMockAgentTestInitializer.redefine(PowerMockAgentTestInitializer.java:49)
at org.powermock.modules.agent.support.PowerMockAgentTestInitializer.initialize(PowerMockAgentTestInitializer.java:41)
at com.blablacompany.app.weight.WeightMilestonesViewBeanUnitTest.setUpMock(WeightMilestonesViewBeanUnitTest.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:80)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:47)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:103)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:355)
at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:66)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: Unable to load Java agent; please add lib/tools.jar from your JDK to the classpath
at org.powermock.modules.agent.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:97)
at org.powermock.modules.agent.JDK6AgentLoader.loadAgent(JDK6AgentLoader.java:70)
at org.powermock.modules.agent.AgentInitialization.initializeAccordingToJDKVersion(AgentInitialization.java:40)
at org.powermock.modules.agent.PowerMockAgent.verifyInitialization(PowerMockAgent.java:83)
at org.powermock.modules.agent.PowerMockAgent.instrumentation(PowerMockAgent.java:76)
at org.powermock.modules.agent.PowerMockClassRedefiner.redefine(PowerMockClassRedefiner.java:57)
... 37 more

事实证明,由于某种原因,我的 gradle 使用 JRE 的文件夹作为 java.home,这就是它找不到 tools.jar 的原因。 我不认为我想手动将它添加到我的类路径中。我想知道是否有办法告诉 gradle 使用 JDK 的 java home 而不是 JRE 的? 我还尝试在 gradle.properties 文件中使用 org.gradle.java.home 覆盖它,但它不起作用。任何帮助是极大的赞赏。

当我从 IDE(Intellij IDEA)运行相同的测试时,所有测试都成功通过。我在 Mac OS 上运行所有这些。

println System.getenv("JAVA_HOME")
println System.properties['java.home']

显示:

/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home                                                                                                                                                                
/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/jre 

这不是 JDK 与 JRE 的问题。的价值观JAVA_HOME vs. java.home是正确且符合预期的(请参阅有关此主题的其他 SO 问题)。tools.jar有必要execute工具如javac and javadoc。然而,JDK 的javac命令行编译器也不是 Gradle 的JavaCompile任务会自动放到tools.jar在用户代码的编译类路径上。相反,您必须明确添加它。例如:

def jdkHome = System.getenv("JAVA_HOME")

dependencies {
    compile files("$jdkHome/lib/tools.jar")
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gradle JRE 与 JDK 请从您的 JDK 添加 lib/tools.jar 的相关文章

随机推荐

  • Unicode 数字的字符类

    我需要创建一个Pattern它将匹配所有 Unicode 数字和字母字符 到目前为止我已经 p IsAlphabetic 0 9 第一部分对我来说效果很好 它很好地将非拉丁字符识别为字母字符 问题出在后半段 显然它只适用于阿拉伯数字 字符类
  • Angular 2:模板解析错误:无法绑定到“ngModel”,因为它不是“输入”的已知属性

    当我使用双向绑定 ngModel 时收到此消息 Template parse errors Can t bind to ngModel since it isn t a known property of input 我知道导入 Forms
  • 免费 API 或类似工具可获取股票的下一个收益日期 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 API 或类似的 API 我可以在其中获取股票的下一个 即将到来的 收益日期 我已经用
  • 在播放视频/流时选择 ROI

    如果有人可以帮助我在视频流播放时选择 ROI 我不希望它暂停或捕获第一帧 我将不胜感激 我错过了什么吗 我尝试将框架设置为相同的名称 cv2 selectROI Frame frame False cv2 imshow Frame fram
  • 如何使用UISearchBar搜索MKMapView?

    我有一个应用程序需要具有类似的搜索功能 例如 Apple 地图 应用程序 iPhone iPod Touch 和 iPad 附带 有问题的功能应该不是一件难事 但我真的不知道如何在搜索栏中输入街道地址 然后获取该地址的坐标或可以帮助我实际移
  • 单击按钮刷新页面

    我想在单击按钮时刷新当前页面 使用 JavaScript 我有以下内容
  • 复制和移动习语?

    通过使用复制和交换 https stackoverflow com questions 3279543 what is the copy and swap idiom rq 1我们可以轻松地实现具有强大异常安全性的复制赋值 T operat
  • 为什么使用 Django 的collectstatic 而不是直接从静态目录提供文件?

    来自 Django 文档 部署 django contrib staticfiles 提供了方便 用于在单个目录中收集静态文件的管理命令 您可以轻松地为他们服务 将 STATIC ROOT 设置为您想要的目录 提供这些文件 例如 STATI
  • GWT RequestFactory 不持久保存附加实体

    我正在努力掌握新的窍门请求工厂 http code google com webtoolkit doc latest DevGuideRequestFactory htmlAPI 经历了一段非常艰难的时期 我的域模型包括Staffer a
  • 为什么这里不显示表的列名?

    我的跷跷板有问题 当我尝试组成并显示一个简单的表格时 它显示没有列名称 我做了什么 首先 我必须说我正在使用 seesaw 1 4 2 Then Clojure 1 4 0 require seesaw core as ss ss nati
  • JavaScript 中的 HTTP GET 请求?

    我需要做一个HTTP GET http en wikipedia org wiki Hypertext Transfer Protocol Request methodsJavaScript 中的请求 最好的方法是什么 我需要在 Mac O
  • 忽略 DurandalJS 应用程序中的锚点

    我有一个使用 DurandalJS 的 SPA 应用程序 效果很好 链接被路由 视图模型被激活等 问题是 我有一个锚点指向实际存在于服务器上的页面 我需要浏览器来实际查询此页面 这是一个 asp net MVC 页面 看起来 Duranda
  • 在 Collectors.groupingBy() 中映射值

    为了这个例子 我们假设我有一个简单的类型Tuple有两个属性 interface Tuple
  • Excel VBA 使用 Telegram bot api 发送图像

    我正在编写一个 Excel 宏 该宏在运行另一个宏后发送结果的屏幕截图 截取的屏幕截图以 jpg 图像形式保存在目录 C documents SCREENSHOT 中 我想使用机器人将 picture1 jpg C documents SC
  • 如何访问 AS3 URLLoader 在 IOErrorEvent 上返回的数据

    我正在为 api 编写一个动作脚本库 我使用 URLLoader 对象从 api 加载数据 我遇到的问题是 每当 api 返回 400 秒内的 http 状态时 actionscript 都会将此视为 io 错误 这一切都很好 但是 如果是
  • 访问另一个用户的 D-Bus 会话

    让我们假设这种情况 我们有一个用户登录 通过以下方式执行一些应用程序sudo or su 该用户有一个dbus daemon跑步 然而 当以 root 权限运行的应用程序尝试访问 D Bus 时 它只会生成另一个dbus daemon 由
  • Windows 中需要 rJava 的问题

    我使用的是 64 位机器 具有最新版本的 R 3 1 2 最新的 RStudio 版本 0 98 1091 和最新的 JAVA 版本 8 Update 31 我尝试要求 rJava rJava 0 9 6 结果出现以下错误 require
  • 无法在 ubuntu 18.04 上安装 php-mbstring

    我使用的是ubuntu 18 04 我正在尝试安装 mbstring 但终端显示错误 php mbstring Depends php7 2 mbstring but it is not going to be installed 所以我尝
  • 使用“plot_date()”在日期图上使用颜色循环设置颜色

    我目前正在尝试使用 matplotlib 绘制多个数据图plot date功能 我无法弄清楚的一件事是如何自动为每个图表分配不同的颜色 就像发生的那样 plot设置后axes color cycle in matplotlib rcPara
  • Gradle JRE 与 JDK 请从您的 JDK 添加 lib/tools.jar

    我正在使用 gradle 运行 java 测试 这是我的例外 java lang RuntimeException java lang IllegalStateException Unable to load Java agent plea