我正在尝试运行一个基于java的java分析器来找出我的专用机器上的java应用程序的资源消耗情况。我尝试使用的分析器称为 Warmroast。
运行时出现以下错误。
java -jar warmroast.jar
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/attach/AttachNotSupportedException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.sun.tools.attach.AttachNotSupportedException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 6 more
我认为这个错误是由于使用jre而不是jdk运行文件引起的。
我已将 java-1.7.0-openjdk-1.7.0.55-2.4.7.1.el6_5.x86 作为 yum 包安装。
[root@ ~]# java -version
java version "1.7.0_55"
OpenJDK Runtime Environment (rhel-2.4.7.1.el6_5-x86_64 u55-b13)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)
我认为要解决这个问题,我需要使用 jdk 运行 jar 文件。 jdk bin 文件是否有某种 jdk 路径?如果有的话,centos 里是什么?我用谷歌搜索了一段时间,发现了几十条错误的路径。我觉得很愚蠢,因为我认为jre是jdk的一部分,而jdk仅用于编译东西,我不认为你可以用jdk运行文件...... ... ...
最佳答案
无法找到的类位于 JDK 的 tools.jar
中。即使您使用 JDK 而不是 JRE,该库通常也不会自动位于类路径中。
根据documentation ,在 Linux 上,warmroast 应按如下方式启动(将 PATH_TO_JDK 替换为 JDK 的路径):
java -Djava.library.path=PATH_TO_JDK/jre/bin -cp PATH_TO_JDK/lib/tools.jar:warmroast-1.0.0-SNAPSHOT.jar com.sk89q.warmroast.WarmRoast --thread "Server thread"
这里,tools.jar
被手动添加到类路径中。
关于java - 运行 java 分析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23706415/