asm-4 を使用してコードを計測する javaagent を開発しようとしています。今のところ、私は非常に基本的な問題で立ち往生しています.javaagentのクラスローダーはasm依存関係を認識しないため、失敗します。エージェントが必要とするすべてのクラスを含む jar-with-dependencies (別名 maven ビルド プラグイン) を提供する必要がありますか、またはクラスを Java エージェントに追加する別の方法はありますか? クラスパスでjar asm-all.jarを直接参照しても役に立ちませんでした。Premain-Class 属性をアセンブリ プラグインで設定できなかったため、jar-with-dependencies のビルドは最初は役に立ちませんでした。助けていただければ幸いです;-)
18746 次
5 に答える
12
わかりました、実験で見つけました。依存クラスは、maven アセンブリ プラグインによって作成できる jar の一部である必要があります。次に例を示します。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<index>true</index>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
<manifestEntries>
<Premain-Class>test.agent.MyAgent</Premain-Class>
</manifestEntries>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!-- this is used for inheritance merges -->
<phase>package</phase>
<!-- append to the packaging phase. -->
<goals>
<goal>single</goal>
<!-- goals == mojos -->
</goals>
</execution>
</executions>
</plugin>
jar を javaagent パスとして使用すると、すべて正常に動作します。
于 2013-04-08T20:16:07.960 に答える
1
MyAgent.jar 内の Manifest.mf ファイルで Class-Path を指定できると思います。
于 2013-05-02T09:27:16.220 に答える