我正在尝试运行基于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路径到jdk bin文件?如果是这样,它在centos中是什么?我用谷歌搜索了一段时间,想出了几十条错误的路径。我觉得很愚蠢,因为我认为jre是jdk的一部分,而jdk只用于编译东西,我不认为你可以用jdk运行文件... ... ...
答案 0 :(得分:2)
无法找到的类位于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
被手动添加到类路径中。