如何将 jar 添加到 Windows 中的 jconsole 类路径



我正在尝试通过Jconsole调用JMX MBean,但是我调用的方法接收了一个需要在jconsole类路径上才能工作的对象。

我已经尝试过这个,但 jconsole 无法打开(并且没有显示任何错误):

jconsole -J-Djava.class.path=%JAVA_HOME%libjconsole.jar;path_to_newjar_newjar.jar

将 jconsole.jar 从 -J 类路径中取出。它已经在 jconsole 启动器中设置了。

===== 更新 =====

嗯....我收回我的建议。 我有一个我使用的 Windows 批处理文件[它有效],它将 JAR 添加到类路径中。目的是将 JMXMP JMX 客户端添加到 jconsole 中,然后启动到指定的参数 JMX 服务 URL。它看起来像这样:

@echo off
start /B jconsole -J-Djava.class.path=%JAVA_HOME%libjconsole.jar;MY-JAR-PATHjmx-optional-1.0-b02-SNAPSHOT.jar service:jmx:jmxmp://localhost:%1

如果这样的命令不起作用(即 jconsole 仍然不会启动,但也不会出错),那么您需要找出它停滞在哪里。 对此有2条建议:

  1. 启动另一个 jconsole 并通过 PID 连接到停滞的 jconsole,切换到"线程"选项卡并观察线程中发生的事情。
  2. 或者,(因为它看起来像你在窗口中)点击 Ctrl-Break,希望它会将线程转储打印到控制台,然后您可以盯着那里发生的线程。

如果您得到任何东西(或者如果您没有...

如果您想同时访问本地和远程进程,上述答案仍然缺少一个步骤。

来自Java 8 oracle文档:

如果 JMX 代理程序使用的连接器未包含在 Java 平台中,那么在运行 jconsole 命令时,您需要将连接器类添加到类路径中,如下所示。

$ jconsole -J-Djava.class.path=JAVA_HOME/lib/jconsole.jar:JAVA_HOME/lib/tools.jar:connector-path

在上面的命令中,连接器路径是目录或 Java 归档 (Jar) 文件,其中包含 JDK 中未包含的连接器类,这些连接器类将由 JConsole 使用。

那么,在您的情况下,该命令将是:

$ jconsole -J-Djava.class.path=%JAVA_HOME%libjconsole.jar;%JAVA_HOME%/lib/tools.jar:path_to_newjar_newjar.jar

当您离开JAVA_HOME/lib/tools.jar 时,本地进程将不再可用。

Windows 中的解决方案是在类路径上使用引号,例如:

jconsole -J-Djava.class.path="%JAVA_HOME%libjconsole.jar;path_to_newjar_newjar.jar"

相关内容

  • 没有找到相关文章

最新更新