最近,我使用byte buddy开发了一个Java代理。 eclipse中的开发很好,然后我将代理程序投入生产并显示以下消息:
No compatible attachment provider is available
以及一些源自行的堆栈跟踪
static {
ByteBuddyAgent.install();
}
经过一些调试后,我发现了问题。如果使用jre而不是jdk调用了代理,则会出现消息“没有兼容的附件提供者不可用”。
[不幸的是,调用java -version
不会返回java
是jdk还是jre(消息都显示Java runtime Environment
)。
在我的情况下(OS:Windows),这很棘手,因为较新的jsdk安装将C:\ProgramData\Oracle\Java\javapath
附加到系统路径,该路径包含jre而不是jdk。通过此修改隐藏了以前添加的条目%JAVA_HOME%/bin
。当我删除条目C:\ProgramData\Oracle\Java\javapath
时,一切正常。