Java agent 配置不生效 (哭笑不得的坑)

本篇文章主要是为了记录踩的坑,避免下次又emo 了…

代码实现的效果如下图所示:
在这里插入图片描述

agent 代码:

新建 trace-agent

pom.xml 中的配置如下:(没有看错,不使用任何依赖)

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-jar-plugin</artifactId>
			<version>2.2</version>
			<configuration>
				<archive>
					<manifestEntries>
						<Project-name>${project.name}</Project-name>
						<Project-version>${project.version}</Project-version>
						<Premain-Class>com.ibicd.TraceAgent</Premain-Class>
					</manifestEntries>
				</archive>
				<skip>true</skip>
			</configuration>
		</plugin>
	</plugins>
</build>

新建类: com.ibicd.TraceAgent

包名和类名需要和maven pom.xml 配置文件中的 Premain-Class 完全相同,代码如下:

package com.ibicd;
import java.lang.instrument.Instrumentation;

public class TraceAgent {

    public static void premain(String args, Instrumentation inst) {
        System.out.println("TraceAgent.premain: " + args);
    }
}

新建 trace-agent-demo

没什么特殊的代码,pom.xml 中不需要引入任何依赖,只需写一个测试类(AgentTest.java):

package com.ibicd;

public class AgentTest {

    public static void main(String[] args) {

        System.out.println("hello world");
    }
}

运行 AgentTest 时配置 java agent:

可能人人都知道只需配置对应的agent 路径就可以了,没错。就是:

-javaagent:trace-agent\target\trace-agent-1.0-SNAPSHOT.jar=name=张三

配置没问题呀,就是输出的内容始终都是 “hello world”
陷入沉思~
反复确认路径有没有写错,单次有没有写错~~
这就是要说的第二个坑,看下文

遇过的坑:

1. premain 中的参数类型错误

没看错,就2个入参都会写错!使用AI 编程,不得不说有时候 TA 真的很自作聪明,然而又想当然的认为TA很聪明,眼力跟不上。将 premain() 中的入参 args 类型定义为了 String[] ,狂汗!(真想给自己两巴掌~)

2. 虚拟机参数位置配错

正常来说,要运行一个类,要配置运行参数,就会打开:
在这里插入图片描述
于是看到下面这个红框起来的部分,然后把 参数写到 Program arguments 一栏(成功入坑):
在这里插入图片描述
这时,会无数次怀疑是我写的路径不对? 哪个单词写错了?改了又改还是输出 “hello world” ?

经过排查后,IDEA 把 VM options 藏起来了!打开方式:
在这里插入图片描述
再把上面的参数路径配置写入刚添加的输入框中:
在这里插入图片描述
然后再保存运行,查看控制台输出(终于松了一口气):
在这里插入图片描述

总结

用IDEA 添加参数时,需要先明确添加的是什么参数,不要见框就填!!!关于如何知道自己要添加的参数类型,参照下面的截图:
在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值