如何在IntelliJ运行配置中把-javaagent置于主类之前?
IntelliJ中New Relic Agent配置失效的解决办法
在IntelliJ里运行Java应用需要配置运行参数,要是把New Relic的agent参数-javaagent:target/newrelic/newrelic.jar填到「程序参数」里,会被IntelliJ放到命令行的主类后面,直接导致agent无法生效。当前生成的错误命令行如下:
"C:\Program Files\Zulu\zulu-8\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2024.1.1\lib\idea_rt.jar=61424:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2024.1.1\bin" -Dfile.encoding=UTF-8 -classpath "... thousands of classes .." com.myorg.myapp.Main -javaagent:target/newrelic/newrelic.jar
问题原因
-javaagent是JVM启动参数,必须放在主类名之前才能被JVM识别;命令行里虽然已经有IntelliJ自带的agent参数,但Java支持同时加载多个agent,所以核心问题还是New Relic的agent参数位置错误。
解决步骤
- 打开IntelliJ的运行配置窗口,找到你当前使用的应用配置
- 切换到「修改选项」,勾选「添加VM选项」(如果没显示的话)
- 在「VM选项」输入框中添加
-javaagent:target/newrelic/newrelic.jar - 保存配置后重新运行应用
修改后生成的正确命令行应该类似:
"C:\Program Files\Zulu\zulu-8\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2024.1.1\lib\idea_rt.jar=61424:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2024.1.1\bin" -Dfile.encoding=UTF-8 -javaagent:target/newrelic/newrelic.jar -classpath "... thousands of classes .." com.myorg.myapp.Main
内容的提问来源于stack exchange,提问作者John Little
相关产品推荐
相关产品推荐

