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>
添加回答
舉報