【问题标题】:Reference Jar within main Jar to pass as javaagent to JVM在 main Jar 中引用 Jar 作为 javaagent 传递给 JVM
【发布时间】:2018-01-24 08:02:15
【问题描述】:

我需要在运行 jar1 时在我的 JVM args 中添加一个 -javaagent 参数,但引用 jar1 中包含的 jar2。我试过了:

-javaagent:BOOT-INF/lib/jetty-alpn-agent-2.0.0.jar"

没有成功。如何在运行时确定 JAR 在运行系统中的位置?

(这是为了将 jetty-alpn-agent-2.0.0.jar 作为 Java 代理运行,用于 HTTP/2 与 Pushy APN 一起使用)

【问题讨论】:

  • 你找到解决这个问题的方法了吗?

标签: java jar javaagents alpn pushy


【解决方案1】:

如果你知道类在类路径上,你通常可以这样做:

URL jar = MainClass.class.getProtectionDomain().getCodeSource().getLocation();

Javaagent 总是加载在类路径上,这就是为什么您应该能够引用常规应用程序的主类的原因。

【讨论】:

    【解决方案2】:

    @indusBull

    对我有用的解决方案是在我的 gradle.properties 文件中定义一个名为 libDirectory 的属性,这是 JAR 在运行系统中的位置,然后从我的 Dockerfile 中引用该变量:

    gradle.properties

    libDirectory = /opt/meanwhileinhell/app/lib
    

    Dockerfile

    ENTRYPOINT  ["java",\
                ...
                ...
                "-javaagent:${libDirectory}/jetty-alpn-agent.jar",\
                "-jar", "/app.jar"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 2011-06-17
      • 2019-09-20
      • 2014-03-12
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      相关资源
      最近更新 更多