java - 加载位于加载器内的 Java 代理 JAR

标签 java attach-api

我的 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/

相关文章:

java.lang.NoClassDefFoundError : javax/persistence/EntityListeners 错误

java - JSP 页面提交的输入路径 ID 总是被@ModelAttribute 解释为零,因此无法更新模型对象

Java Applet 未加载 - 客户端/服务器

java - 确定从何处加载特定类

java - 如何在两个对象的java相等性中评估列表

java - 在 OpenJDK 上运行时加载 java 代理?

java - 使用 Attach Api 时出错