gpt4 book ai didi

java - 如何全局设置jdk.attach.allowAttachSelf = true

转载 作者:行者123 更新时间:2023-12-01 08:28:10 67 4
gpt4 key购买 nike

我正在尝试将我们的系统之一从Java 8移至Java 9,而在Java 8中运行正常的单元测试中约有三分之一失败,并显示以下错误:

java.io.IOException: Can not attach to current VM

Google将我带到了几页,我很快了解到在Java 9中,默认行为已更改,以防止附加到当前VM,并返回到旧方法,需要将系统属性 jdk.attach.allowAttachSelf设置为true。

在IntelliJ中进行设置时,测试工作正常。更改build.gradle使其包含以下内容时,其工作原理相同:
test {
jvmArgs '-Djdk.attach.allowAttachSelf=true'
}

但是,我宁愿在全局范围内使用此设置,因此不需要破解我的build.gradle和IntelliJ。

我在ubuntu上运行Java 9,并更改了 /etc/profile.d/jdk.sh使其包含以下内容:
export JDK_JAVA_OPTIONS="-Djdk.attach.allowAttachSelf=true"

运行我的Gradle构建时,我可以看到设置被拾取,因为我在构建输出中位于下面:
NOTE: Picked up JDK_JAVA_OPTIONS: -Djdk.attach.allowAttachSelf=true

但是,测试始终失败,并带有相同的IOException。

那么我在做什么错了,应该如何解决呢?

预先感谢您的输入。

最佳答案

我的测试正在使用surefire插件运行,
如果在argline中添加了vm参数,则测试开始工作。

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version>
<configuration>
<argLine>-Djdk.attach.allowAttachSelf=true </argLine>
</configuration>
</plugin>

关于java - 如何全局设置jdk.attach.allowAttachSelf = true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50498102/

67 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com