自注入 java 代理
Self-injecting java agent
我正在尝试创建一个自注入 java 代理。代理和动态加载代理的代码将包含在同一个 jar 文件中。
我试图通过在清单文件中同时定义 Main-Class
和 Agent-Class
来做到这一点。这是文件:
Manifest-Version: 1.0
Main-Class: myjar.injector
Agent-Class: myjar.agent
但是,当我 运行 jar 时,出现以下错误:
com.sun.tools.attach.AgentLoadException: Agent JAR not found or no Agent-Class attribute
当我检查编译后的 jar 时,jar 的清单文件中只有一个 Main-Class
属性。我尝试在 IDE 之外重新编译,但仍然只有 Main-Class
属性。
有没有办法在一个 jar 文件中同时包含 Main-Class
和 Agent-Class
?
是的。把它放在那里。您有一些将 java 源文件转换为 jar 文件的过程。我希望它是 Maven 或 gradle 或其他构建系统。它可能是 IDE 或手写脚本。这没什么神奇的:你的工具链搞砸了。
您随时可以按如下方式查看清单:
jar xvf myjar.jar META-INF/MANIFEST.MF
cat META-INF/MANIFEST.MF
我正在尝试创建一个自注入 java 代理。代理和动态加载代理的代码将包含在同一个 jar 文件中。
我试图通过在清单文件中同时定义 Main-Class
和 Agent-Class
来做到这一点。这是文件:
Manifest-Version: 1.0
Main-Class: myjar.injector
Agent-Class: myjar.agent
但是,当我 运行 jar 时,出现以下错误:
com.sun.tools.attach.AgentLoadException: Agent JAR not found or no Agent-Class attribute
当我检查编译后的 jar 时,jar 的清单文件中只有一个 Main-Class
属性。我尝试在 IDE 之外重新编译,但仍然只有 Main-Class
属性。
有没有办法在一个 jar 文件中同时包含 Main-Class
和 Agent-Class
?
是的。把它放在那里。您有一些将 java 源文件转换为 jar 文件的过程。我希望它是 Maven 或 gradle 或其他构建系统。它可能是 IDE 或手写脚本。这没什么神奇的:你的工具链搞砸了。
您随时可以按如下方式查看清单:
jar xvf myjar.jar META-INF/MANIFEST.MF
cat META-INF/MANIFEST.MF