如何设置 jdk.attach.allowAttachSelf=true 全局
我正在尝试将我们的一个系统从java 8移动到java 9,并且在java 8中工作正常的单元测试中约有三分之一失败,并出现以下错误:
java.io.IOException: Can not attach to current VM
Google将我带到了几个页面,我很快了解到在java 9中,默认行为已更改,以防止附加到当前VM并返回到需要将系统属性设置为true的旧方法。jdk.attach.allowAttachSelf
在 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,测试仍然失败。
那么我做错了什么,我应该如何解决它?
提前感谢您的输入。