我将 Kamon 与 akka 2.4(包括远程)一起使用。
这意味着我需要包含一个 -javaagent 选项才能按照 Kamon doc 的指定启动。
问题是我的 Maven 正在构建一个 allinone jar:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>allinone</shadedClassifierName>
<artifactSet>
<includes>
<include>*:*</include>
</includes>
</artifactSet>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>reference.conf</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<main-Class>my.main.Program</main-Class>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
如果我从 IDE (Intellij) 中运行东西,它可以通过添加以下任何一个来正常工作:
-javaagent:full\path\to\aspectjweaver-1.8.10.jar
或者这两个到pom:
<dependency>
<groupId>io.kamon</groupId>
<artifactId>kamon-autoweave_2.11</artifactId>
<version>0.6.5</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.10</version>
</dependency>
问题是,一旦我实际构建了 jar (mvn clean package),并且使用(或不使用) -javaagent 选项 (java -javaagent... -jar app.jar) 运行它,编织就不会发生,并且在 IDE 外运行时不报告任何指标。
我发现很难调试这个问题,因为即使有
kamon.metric.disable-aspectj-weaver-missing-error = false
家纹没有告诉我编织不见了。
我相信这是由于 Java 没有在路径中找到 Weaver 类,但我无能为力。
有什么帮助吗?目标是通过编织在外部运行 jar