【问题标题】:Self-injecting java agent自注入java代理
【发布时间】:2020-08-21 23:32:27
【问题描述】:

我正在尝试创建一个自注入 Java 代理。代理和动态加载代理的代码将包含在同一个 jar 文件中。

我试图通过在清单文件中同时定义 Main-ClassAgent-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-ClassAgent-Class

【问题讨论】:

    标签: java agent


    【解决方案1】:

    是的。把它放在那里。您有一些将 java 源文件转换为 jar 文件的过程。我希望它是 maven 或 gradle 或其他一些构建系统。它可能是 IDE 或手卷脚本。它没有什么神奇之处:你的工具链搞砸了。

    您始终可以按如下方式检查清单:

    jar xvf myjar.jar META-INF/MANIFEST.MF
    cat META-INF/MANIFEST.MF
    

    【讨论】:

    • 我使用 jar 命令行实用程序构建了 jar。我的清单文件最初包含两者,但 jar 的清单只有 Main-Class
    • 如果你使用jar-m,那是不可能的;您必须手动从使用 -m 选项提供的清单中删除该行,或者您没有查看您构建的 jar 文件。
    • 是的,我是个白痴,我使用 jar 命令错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多