网站工作室网站,metro风格网站模板,wordpress文章添加忽略,wordpress商城主题个人中心1、简介 javaagent 是 Java1.5 之后引入的新特性#xff0c;其主要作用是在class被加载之前对其拦截#xff0c;以插入我们的字节码。 java1.5 之前使用的是JVMTI#xff08;jvm tool interface#xff09;技术来实现对class的拦截#xff0c;不过这个是用 C 编写的#…1、简介 javaagent 是 Java1.5 之后引入的新特性其主要作用是在class被加载之前对其拦截以插入我们的字节码。 java1.5 之前使用的是JVMTIjvm tool interface技术来实现对class的拦截不过这个是用 C 编写的比如 debug 功能就是用这个技术实现的。 2、jar包
常见的jar包分为 可运行jar 和 javaagent.jar ,它们的主要区别如下
Executable JarJavaagent Jar入口方法mainpremain打包参数Main-ClassPremain-Class启动方式java -jar xxx.jar-javaagent:xxx.jardddd是否可启动是否 3、可运行 jar 包
入口方法
package com.ybw;
public class TestMain {// 这个是我们经常写的public static void main(String[] args) {System.out.println(hello main);}
}pom.xml配置
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.ybw/groupIdartifactIdtest-main/artifactIdversion1.0.0/versionpropertiesmaven.compiler.source21/maven.compiler.sourcemaven.compiler.target21/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-jar-plugin/artifactIdversion3.4.2/versionconfigurationarchive!--指定 Main-Class 来指定可运行 jar 的主类 --manifestmainClasscom.ybw.TestMain/mainClass/manifest/archive/configuration/plugin/plugins/build/project 打包jar
mvn package
打包后会生成 target文件并且生成 jar 包。 4、javaagent.jar
入口方法
package com.ybw;import java.lang.instrument.Instrumentation;public class TestAgent {public static void premain(String arg, Instrumentation instrumentation) {System.out.println(javaagent arg arg);}
}pom.xml配置
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.ybw/groupIdartifactIdagent-demo/artifactIdversion1.0.0/versionnameagent-demo/namedescriptionagent-demo/descriptionpropertiesjava.version21/java.version/propertiesdependencies/dependenciesbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-jar-plugin/artifactIdversion3.4.2/versionconfigurationarchive!--方法一MANIFEST.MF 配置文件--!--manifestFilesrc/main/resources/META-INF/MANIFEST.MF/manifestFile--!--方法二: pom 指定配置--manifestEntriesPremain-Classcom.ybw.TestAgent/Premain-Class/manifestEntries/archive/configuration/plugin/plugins/build/project打包jar
mvn package
打包后会生成 target文件并且生成 jar 包。 5、执行 两个项目执行了 package 之后把 target\agent-demo-1.0.0.jar 和 target\test-main-1.0.0.jar移动到同一个文件夹下。然后执行命令
$ c:/jdk21/bin/java -javaagent:agent-demo-1.0.0.jartest -jar test-main-1.0.0.jar
javaagent argtest
hello main