ByteBuddy IllegalStateException:附件提供程序无法连接到当前 JVM

ByteBuddy IllegalStateException: Attachment provider cannot connect on current JVM

我正在尝试模拟一个 class 被某个进程加载到 return 另一个值。

说我有

Class A 
{ 
    public static IClassType getTheClass()
    { 
       new ClassB();
    } 
}

我希望如果某些进程调用 ClassA.getTheClass() 到 return 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 吗?我错过了什么吗?

byte-buddy-agent.jar 直到最近才出现错误。尝试使用较新的版本,它应该可以正常运行。

ByteBuddyAgent 确实只适用于支持某种形式的 tools.jar 的 JVM。 (目前,OpenJDK、OracleJDK 和 J9。)