4 回答
TA贡献1802条经验 获得超4个赞
请参阅JDK-8180425:发行说明:默认情况下无法使用附加 API 附加到当前 VM:
Attach API 的实现在 JDK 9 中已更改为默认情况下不允许附加到当前 VM。此更改对使用 Attach API 附加到正在运行的 VM 的工具应该没有影响。它可能会影响滥用此 API 作为获取
java.lang.instrument
API 的方式的库。jdk.attach.allowAttachSelf
可以在命令行上设置系统属性以减轻与此更改的任何兼容性。
TA贡献1784条经验 获得超2个赞
我不确定这是否对每个人都有帮助,但就我而言,这是一个测试用例,用于测试代理是否正确附加到 JDK(当代理实际附加到 JDK 时它不会自附加,即,实际运行时不是测试用例)。
根据@Holger 的建议,在评论中,我修改了我的 maven-failsafe-plugin 以允许自我附加。
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.2</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<argLine>-Djdk.attach.allowAttachSelf=true</argLine>
<forkMode>once</forkMode>
</configuration>
</execution>
</executions>
</plugin>
TA贡献1793条经验 获得超6个赞
这通过在 maven-surefire-plugin 中添加 javaagent 对我有用
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<!-- Centralize test reports in parent project -->
<reportsDirectory>${basedir}/../target/surefire-reports</reportsDirectory>
<!-- Sets the VM argument line used for Jacoco when unit tests are run. -->
<argLine>
-javaagent:${settings.localRepository}/org/jmockit/jmockit/${jmockit.version}/jmockit-${jmockit.version}.jar ${surefireArgLine}
</argLine>
</configuration>
</plugin>
添加回答
举报