別の値を返すために何らかのプロセスによってロードされるクラスをモックしようとしています。
私が持っていると言う
Class A
{
public static IClassType getTheClass()
{
new ClassB();
}
}
そして、いくつかのプロセスがClassA.getTheClass()
戻るように呼び出した場合ClassC
(もちろん実装しますIClassType
)
どういうわけか、Byte Buddy のホットスワップ機能を使えばこれが可能になるはずだとわかりました。しかし、エージェントのインストールに失敗します。-javaagent:C:\byte-buddy-agent-0.7.1.jar
私は私に与えるスイッチで試しました
java.lang.IllegalStateException: The Byte Buddy agent is not installed or not accessible
ByteBuddyAgent.install();
と同様に
java.lang.IllegalStateException: Attachment provider cannot connect on the current JVM: ByteBuddyAgent.AttachmentProvider.Compound{attachmentProviders=[ByteBuddyAgent.AttachmentProvider.ForJigsawVm.INSTANCE, ByteBuddyAgent.AttachmentProvider.ForToolsJarVm.JVM_ROOT, ByteBuddyAgent.AttachmentProvider.ForToolsJarVm.JDK_ROOT, ByteBuddyAgent.AttachmentProvider.ForToolsJarVm.MACINTOSH]}
私のマシンで。これは OpenJDK でのみ機能しますか? 何か不足していますか?