3

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

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

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

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

4

2 回答 2

0

如果您知道该类在类路径上,您通常可以执行以下操作:

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

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

于 2017-08-17T07:10:00.433 回答
0

@indusBull

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

gradle.properties

libDirectory = /opt/meanwhileinhell/app/lib

Dockerfile

ENTRYPOINT  ["java",\
            ...
            ...
            "-javaagent:${libDirectory}/jetty-alpn-agent.jar",\
            "-jar", "/app.jar"]
于 2019-01-02T14:37:21.257 回答