Javaagent:简单的使用-javaagent输出加载的类

1. 声明

当前内容主要为本人学习-javaagent,本人由于多次看到(输入java的时候发现,破解idea的时候发现了),所以了解这个的作用

当前内容主要为:

  1. 创建自己的-javaagent的类,并打包
  2. 在另外一个运行的main方法上使用这个jar包
  3. 主要实现类打印功能

当前内容部分参考:博文

2. 创建一个基本的agent并打包

package com.hy.vmopt;

import java.lang.instrument.ClassFileTransformer;
import java.lang.instrument.IllegalClassFormatException;
import java.lang.instrument.Instrumentation;
import java.security.ProtectionDomain;

/**
 * 
 * @author hy
 * @createTime 2021-06-19 11:20:50
 * @description 当前内容主要为测试和使用当前的-javaagent
 *
 */
public class JavaAssigentTest {
	public static void premain(String args, Instrumentation instrumentation) {
		MyClassFileTransformer transformer = new MyClassFileTransformer();
		instrumentation.addTransformer(transformer);
	}

	public static class MyClassFileTransformer implements ClassFileTransformer {
		@Override
		public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined,
				ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {
			System.out.println("已加载:" + className);
			return classfileBuffer;
		}
	}
}

直接使用eclipse打包,并输出,不要指定主要类,直接打成jar包就可以了

3. 最简单的入口类(主要为了测试)

/**
 * 
 * @author hy
 * @createTime 2021-06-19 11:29:42
 * @description 
 *
 */
public class JavaAssigentRunTest {
	public static void main(String[] args) {
		System.out.println("当前内容测试javaassigent......");
	}
}

4. 配置运行时的vm参数

在这里插入图片描述
在这里插入图片描述

-javaagent:C:\Users\admin\Desktop\myAssigent.jar

5. 运行

在这里插入图片描述
缺少属性:Premain-Class:

查看该MANIFEST文件
在这里插入图片描述
发现果然没有,所以开始添加该内容如下
在这里插入图片描述
最后使用winrar打开并将其替换即可
再次运行

在这里插入图片描述

正常运行

Java Agent是Arthas使用的技术,是Skywalking使用的技术,是一份十分重要的技术。 课程的稀缺性在此之前,市面上并没有针对Java Agent进行系统介绍的课程。 通过搜索引擎查找,会发现与Java Agent相关的内容大多是个人知识总结分享的内容。这些内容有如下特点:内容质量不一详略程度不一学习难度千差万别总体上来说,学习者很难有一个整体认知、系统学习的过程。 课程的设计目标 在构思课程内容时,本课程带有以下目标:课程学习梯度:从简单到复杂,让学习者有一个循序渐进的理解过程。构造完整、统一的知识体系:不是零散的知识点堆砌,而是有一个统一的贯穿始终的知识框架。具有可操作性的代码示例,不只是讲概念,更注意于实践。课程内容安排 本课程通过四章内容对Java Agent相关知识进行讲解:第一章,介绍Agent Jar的三个组成部分:Manifest、Agent Class和ClassFileTransformer。第二章,介绍Agent Jar的两种启动方式:从命令行启动和使用Attach机制启动。第三章,介绍如何利用Instrumentation API来实现Agent Jar的功能。第四章,Java Agent的应用与技巧。 通过本课程的学习,让同学们更好地建立起一个完整的知识体系:  讲师介绍我叫刘森,南京师范大学研究生毕业,2015年获得信息系统项目管理师(高级),2014年获得系统集成项目管理工程师(中级)。 目前,我的课程都是围绕着“Java字节码”技术展开: 《Java Agent基础篇》是在一个运行JVM当中提供修改字节码的机会《Java ASM系列》(免费课程)是一个操作字节码的库《Java 8 ClassFile》专注于字节码的理论知识,入选为“51CTO数字化人才证书项目认证课程” 因此,我对字节码技术有较为深入的研究和理解,大家想学习字节码的技术可以找我:字节码技术找刘森,轻松学习又省心~~~ 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值