次のセットアップが動作しているようだ。後者が前者に依存する
byte-buddy-1.0.0.jar
はgenarated securityfixer-agent-1.0-SNAPSHOT.jar
とともにjava-agents-experiments\securityfixer\agent\target
内でなければなりません。これはsecurityfixer-agent/pom.xml
で、コピーを実行する以下のプラグインを含むことによって達成される:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}</outputDirectory>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
ならびに上記スタンザによって生成されるアーティファクトに<Boot-Class-Path>
で以下参照:
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifestEntries>
<Can-Redefine-Classes>true</Can-Redefine-Classes>
<Can-Retransform-Classes>true</Can-Retransform-Classes>
<Agent-Class>com.excelsiorsoft.securityfixer.agent.SecurityFixerAgent</Agent-Class>
<Premain-Class>com.excelsiorsoft.securityfixer.agent.SecurityFixerAgent</Premain-Class>
<Boot-Class-Path>byte-buddy-1.0.0.jar</Boot-Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
ようにするため不要な依存関係(securityfixer-bootstrap
など)は、上記のプラグインとbyte-buddy-1.0.0.jar
とともにコピーされていません。範囲をprovided
に変更する必要がありました。 maven-dependency-plugin
は、そのスコープの依存関係をコピー先のフォルダにスキップしているようです。
我々はsecurityfixer-example/pom.xml
に<mainClass>
スタンザを追加する必要が実行可能なjarファイルとしてそれを実行できるようにするには、次の
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>securityfixer.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
。
$ java -javaagent:agent/target/securityfixer-agent-1.0-SNAPSHOT.jar=bootstrap/target/securityfixer-bootstrap-1.0-SNAPSHOT.jar -jar example/target/securit yfixer-example-1.0-SNAPSHOT.jar
Security manager is set!
ATTACK FAILED: SecurityManager cannot be reset!
気軽にコメントしてください。より洗練されたソリューションがあります。ありがとう!
これを見ている人にとってはちょっとしたことですが、Byte Buddyバージョン1.4.1以前を必ず使用してください。 1.4.2から、それはもはや動作しません...まだ追跡するのを試みています! –
verで取得しているエラーは何ですか? 1.4.2? –