代码之家  ›  专栏  ›  技术社区  ›  MeanwhileInHell

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

  •  3
  • MeanwhileInHell  · 技术社区  · 7 年前

    -javaagent 当运行jar1时,我的JVM参数中的参数为,但引用jar1中包含的jar2。我尝试过:

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

    jetty-alpn-agent-2.0.0.jar

    2 回复  |  直到 7 年前
        1
  •  0
  •   Rafael Winterhalter    7 年前

    如果知道类位于类路径上,通常可以执行以下操作:

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

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

        2
  •  0
  •   MeanwhileInHell    6 年前

    @英杜斯布尔

    libDirectory gradle.properties 文件,它是JAR在运行系统中的位置,然后从我的 Dockerfile

    格拉德尔。属性

    libDirectory = /opt/meanwhileinhell/app/lib
    

    Dockerfile文件

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