我试图通过运行命令在windows中运行一个简单的java程序。
pmd -d path-to-source\com\vaannila\domain\User.java -f text -R java-basic出现的错误如下所示。
线程“java.lang.NoClassDefFoundError”中的异常:C:\pmd\pmd 5/4/6\bin//\lib\asm-5/0/4/jar,原因是: java.lang.ClassNotFoundException: C:\pmd\pmd 5.4.6\bin.\lib\asm-5.0.4.jar at java.security.AccessController。java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247)的doPrivileged(原生方法)找不到主类: C:\pmd\pmd-bin-5.4.6\bin。.\lib\asm-5.0.4.jar.程序将退出。
请帮我运行PMD
发布于 2018-08-26 08:39:55
我不能重现你的问题,我也不能完全理解错误信息。
根据错误消息,您已经将PMD5.4.6解压缩到C:\pmd中,以便目录C:\pmd\pmd-bin-5.4.6存在。在这个目录中,有两个子目录:bin --它包含pmd.bat和lib,后者包含要放到类路径上的必要jars。
因此,不需要对系统进行进一步的配置,您应该能够在命令shell中简单地运行C:\pmd\pmd-5.4.6\bin\pmd.bat --您应该看到帮助屏幕(而不是NoClassDefFound异常)。
你能试试这个吗?这对你有用吗?如果不是,->重新安装PMD,因为您的安装似乎被破坏了。
我知道,您只是使用pmd来调用pmd --如果您当前位于C:\pmd\pmd-bin-5.4.6\bin目录中,或者如果您将这个目录添加到PATH环境变量中,这是可行的。即使我这样做,它也适用于我,无论我在哪个目录中。
您是否配置了类似于PATH环境变量的内容?
我无法理解错误消息-它声称,它找不到一个名为"C:\pmd\pmd-bin-5/4/6\bin//\lib\asm-5/0/4/jar".的类这不是一个类名,它看起来像一个被操纵的类路径--还可以查看正反斜杠的组合。这个错误的下一部分是"C:\pmd\pmd-bin-5.4.6\bin..\lib\asm-5.0.4.jar“--虽然它似乎是对的,但是缺少一个斜杠--它仍然没有意义。错误消息说,它找不到主类,但是主类称为net.soureforge.pmd.PMD。
供参考,这里是原始内容 of pmd.bat
@echo off
set TOPDIR=%~dp0..
set OPTS=
set MAIN_CLASS=net.sourceforge.pmd.PMD
java -classpath %TOPDIR%\lib\* %OPTS% %MAIN_CLASS% %*你能把这个和你的pmd.bat比较一下吗?我想你的档案看起来有点不一样。
您也可以在没有批处理文件的情况下运行PMD,例如:
java -classpath C:\pmd\pmd-bin-5.4.6\lib\* net.sourceforge.pmd.PMD -d path-to-source\com\vaannila\domain\User.java -f text -R java-basic
这对你有用吗?
P.S.:没错,PMD 5.4.6是最后一个运行在Java1.6上的。但这并不意味着较新版本的PMD不能分析Java1.6。代码。您只需要一个最近的java运行时(例如java 10或11)来执行PMD,需要一个单独的JDK来构建您的项目。PMD可以分析任何版本的java,它不依赖于java版本,而是与之一起运行的。
https://stackoverflow.com/questions/51989317
复制相似问题