我正在尝试模拟一个由某个进程加载以返回另一个值的类。
说我有
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 吗?我错过了什么吗?