无法在调试模式下启动 Liberty 服务器 - "agent library failed to init: jdwp"

Can't start Liberty server in debug mode - "agent library failed to init: jdwp"

当我尝试以 debug 模式启动 WebSphere Liberty 服务器时(连接 Eclipse Java 调试器)通过:

$ ./wlp/bin/server debug MyServer

我收到以下错误:

Error occurred during initialization of VM
agent library failed to init: jdwp
ERROR: Cannot load this JVM TI agent twice, check your java command line for duplicate jdwp options.

并且服务器没有启动。

jvm.options 内容可能与 'debug' 子命令冲突

如果 jvm.options 文件已经包含启用调试器的选项,则使用

liberty start <server>

子命令而不是:

liberty debug <server>

例如在我的例子中,我的服务器有文件 .../usr/servers/MyServer/jvm.options 内容:

#Generated by liberty-maven-plugin
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=7777

因此这些选项与 debug 子命令触发的选项发生冲突。

您可以删除 jvm.options 内容或文件并改用 debug 子命令。

注意:阅读此解释后,错误消息变得清晰,但如果有人没有想到这是解决方案,则此问答很有用。

在 jvm.options 中放入这些条目:

-Dwas.debug.mode=true
-Dcom.ibm.websphere.ras.inject.at.transform=true
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=7777

只是为了添加更新,jvm.options 也可以驻留在 /usr/shared 中,因此相同的调试选项可以跨越多个服务器。如果您有 运行 多台服务器并且需要单独调试它们,这将是一个糟糕的方法。