我的 IDE 中有两个独立的项目,分别用于代理和加载器,用于查找目标 VM 并加载代理 JAR。
- 构建代理项目后,生成的代理 JAR 工件将复制到加载程序的资源文件夹中。
- 构建加载程序项目时,加载程序 JAR 中包含加载程序代码和
agent.jar
。
生成的可运行加载器结构如下所示:
loader.jar
├── META-INF
│ └── MANIFEST.MF
├── me.domain.loader
│ └── Main.class
└── agent.jar
├── META-INF
│ └── MANIFEST.MF
└── me.domain.agent
└── Agent.class
来自VirtualMachine#loadAgent(java.lang.String)规范中,我需要提供包含代理作为第一个参数的 JAR 的路径。
但是,当使用 Main.class.getResource("/agent.jar").getPath()
时,我收到 AgentLoadException: Agent JAR not found or no Agent-Class属性
。正确的做法是什么?
最佳答案
我在 Maven 项目上已经遇到过这样的问题。 无论如何,您可能需要在 META-INF/MANIFEST.MF 中有一个 list 文件:
Manifest-Version: 1.0
Agent-Class: com.package.AgentLoader.agentNameHere
Permissions: all-permissions
您可以在此处了解更多详细信息: https://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html 或者 Agent JAR not found or no Agent-Class attribute
关于java - 加载位于加载器内的 Java 代理 JAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64837302/