我正在尝试使用Jolokia代理连接到JMX应用程序。我正在使用进程PID来附加JVM代理,而我定位的进程已启用了JMX。
我正在使用启用Java热点的Java 1.8,并且正在使用与应用程序使用的--user
相同的名称。没有为此服务设置密码。
该服务正在JRE上运行,我已经将tools.jar
放入JRE的lib目录中。我不允许使用JDK。
在本地运行服务时,我正在使用以下标志进行监视:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.port=9114
-Dcom.sun.management.jmxremote.ssl=false
我正在使用以下命令运行Jolokia:
java -jar /etc/jolokia/jolokia-jvm-1.6.2-agent.jar --port=9114 --host=localhost --debug=true --user=<ServiceNameRemoved> start 30955 --verbose
但是当我运行此命令时,出现以下错误:
Cannot find classes from tools.jar. The heuristics for loading tools.jar which contains
essential classes for attaching to a running JVM could locate the necessary jar file.
Please call this launcher with a qualified classpath on the command line like
java -cp path/to/tools.jar:jolokia-jvm-1.6.2-agent.jar org.jolokia.jvmagent.client.AgentLauncher [options] <command> <ppid>
(command: start) : com.sun.tools.attach.VirtualMachine
java.lang.ClassNotFoundException: com.sun.tools.attach.VirtualMachine
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.jolokia.jvmagent.client.util.ToolsClassFinder.lookupInToolsJar(ToolsClassFinder.java:83)
at org.jolokia.jvmagent.client.util.ToolsClassFinder.lookupClass(ToolsClassFinder.java:54)
at org.jolokia.jvmagent.client.util.VirtualMachineHandler.lookupVirtualMachineClass(VirtualMachineHandler.java:198)
at org.jolokia.jvmagent.client.util.VirtualMachineHandler.attachVirtualMachine(VirtualMachineHandler.java:63)
at org.jolokia.jvmagent.client.AgentLauncher.main(AgentLauncher.java:57)