在主Jar中引用Jar作为javaagent传递给JVM

时间:2017-08-16 08:53:50

标签: java jar javaagents alpn pushy

我需要在运行jar1时在我的JVM args中添加<svg>参数,但是引用jar1中包含的jar2。我试过了:

-javaagent

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

(这是作为使用Pushy APN的HTTP / 2使用的Java代理运行-javaagent:BOOT-INF/lib/jetty-alpn-agent-2.0.0.jar"

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分: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"]