2

別の値を返すために何らかのプロセスによってロードされるクラスをモックしようとしています。

私が持っていると言う

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 でのみ機能しますか? 何か不足していますか?

4

1 に答える 1

0

byte-buddy-agent.jar最近までエラーがありました。新しいバージョンを使用してみてください。問題なく機能するはずです。

ByteBuddyAgent実際には、何らかの形式の をサポートする JVM でのみ機能しtools.jarます。(現在、OpenJDK、OracleJDK、および J9。)

于 2015-12-14T10:56:21.837 に答える