3

我正在从 Windows 控制台运行 Maven 单元测试:

mvn -Dcom.sun.management.jmxremote ^
-Dcom.sun.management.jmxremote.authenticate=false ^
-Dcom.sun.management.jmxremote.ssl=false ^
-Dcom.sun.management.jmxremote.port=1100 ^
-Dtest=TimetableEngineTest test

但是,没有显示开放端口1100 netstat -a,VisualVM无法连接到:127.0.0.1:1100选择“添加JMX连接”时(即使使用外部IP也尝试过)。

难道我做错了什么?

4

2 回答 2

2

当您以这种方式运行 mvn 时,这些参数将被传递到 mvn 批处理文件中。该批处理文件启动 java,但这样做时它不会传递接收到的相同参数。

为了让 JVM 加载 JMX 内容,需要将这些“-D”系统属性参数传递到 java 命令行中,但在这种情况下,JVM 在没有这些参数的情况下启动,然后 maven java 类解析“ -D' 参数并将它们添加为系统属性。这对于(非 JVM 启动)系统属性来说很好,但是对于加载 JMX 来说太晚了。

相反,您应该尝试将 MAVEN_OPTS 环境变量设置为包含

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=1100"

在运行之前mvn

(注意 - 如果在 linux/unix 上运行,请记住也导出 MAVEN_OPTS。)

于 2015-07-30T21:36:30.767 回答
0

我通过在 Eclipse 中安装“ JVM monitor ”插件解决了这个问题。但是我不认为这是正确的解决方案。

于 2013-10-13T16:27:12.383 回答