运行 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 一起使用)
运行 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 一起使用)
如果您知道该类在类路径上,您通常可以执行以下操作:
URL jar = MainClass.class.getProtectionDomain().getCodeSource().getLocation();
Javaagent 总是加载在类路径上,这就是为什么您应该能够引用常规应用程序的主类的原因。
@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"]