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。)
我正在尝试模拟一个 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。)