如何在Windows中的jconsole类路径中添加jar?

时间:2014-03-30 13:45:41

标签: java jvm classpath jmx jconsole

我试图通过 Jconsole 调用 JMX MBean ,但是我调用的方法会收到需要打​​开的对象< strong> jconsole classpath 以便工作。

我试过这个并且jconsole没有打开(并且没有显示错误):

jconsole -J-Djava.class.path=%JAVA_HOME%\lib\jconsole.jar;path_to_newjar_\newjar.jar

3 个答案:

答案 0 :(得分:3)

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

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

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

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

如果这样的命令不起作用(即jconsole仍然无法启动,但也没有错误),那么你需要找出它停止的位置。 2个建议:

  1. 启动另一个jconsole并通过PID连接到停顿的jconsole,切换到Threads选项卡并关注线程中正在进行的操作。
  2. 或者,(因为它看起来像你在Windows中)点击 Ctrl-Break ,希望它会打印出一个线程转储到控制台,然后你可以看到那里的主要线程正在进行中。
  3. 如果你得到任何东西(或者你不......),可以回复。

答案 1 :(得分:0)

如果您想要访问本地和&amp;远程进程,上面的答案仍然缺少一步。

来自Java 8 oracle docs:

  

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

     

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

     

在上面的命令中, connector-path 是包含JKsole将使用的JDK中未包含的连接器类的目录或Java归档(Jar)文件。 / p>

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

$ jconsole -J-Djava.class.path=%JAVA_HOME%\lib\jconsole.jar;%JAVA_HOME%/lib/tools.jar:path_to_newjar_\newjar.jar

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

答案 2 :(得分:0)

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

jconsole -J-Djava.class.path="%JAVA_HOME%\lib\jconsole.jar;path_to_newjar_\newjar.jar"

相关问题