我试图通过 Jconsole 调用 JMX MBean ,但是我调用的方法会收到需要打开的对象< strong> jconsole classpath 以便工作。
我试过这个并且jconsole没有打开(并且没有显示错误):
jconsole -J-Djava.class.path=%JAVA_HOME%\lib\jconsole.jar;path_to_newjar_\newjar.jar
答案 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 :(得分: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"