如何在 bash 中 运行 PMD
How to run PMD in bash
我目前正尝试使用命令 "run.sh pmd -d -f -R" 在 git bash 上 运行 PMD,但我收到一条错误消息 'Could not find or load main class net.sourceforge.pmd.PMD'。我试过在环境变量中设置类路径,但仍然出现错误。有谁知道问题出在哪里?
这似乎是 PMD run.sh 脚本中的错误。它支持 cygwin 环境,但 git bash 环境似乎不是普通的 cygwin 环境(尽管所有必需的 cygwin 命令都在那里)。
脚本构建类路径。由于它在类似 cygwin 的环境下运行,类路径看起来像“/c/pmd-bin-5.5.4/lib/pmd-core-5.5.4.jar:...”。但是,Java Runtime 在 Windows(而不是 cygwin)下运行,因此需要将路径转换为 "C:\pmd-bin-5.5.4\lib\pmd-core-5.5.4.jar;..."。请注意,使用了路径的 Windows 符号(驱动器号和分号作为路径分隔符)。
该脚本使用uname
命令来确定它是否在类似cygwin 的环境下运行。它只检查 "CYGWIN"。但是 git bash 使用例如"MINGW64_NT-10.0".
现在有the new issue #305,应该会尽快修复。
您可以手动修复脚本 bin/run.sh
,方法是将函数 is_cygwin
更改为:
is_cygwin() {
case "$(uname)" in
CYGWIN*|MINGW*) # look also for MINGW!!
readonly cygwin=true
;;
esac
# OS specific support. $var _must_ be set to either true or false.
if [ -z ${cygwin} ] ; then
readonly cygwin=false
fi
}
我目前正尝试使用命令 "run.sh pmd -d -f -R" 在 git bash 上 运行 PMD,但我收到一条错误消息 'Could not find or load main class net.sourceforge.pmd.PMD'。我试过在环境变量中设置类路径,但仍然出现错误。有谁知道问题出在哪里?
这似乎是 PMD run.sh 脚本中的错误。它支持 cygwin 环境,但 git bash 环境似乎不是普通的 cygwin 环境(尽管所有必需的 cygwin 命令都在那里)。
脚本构建类路径。由于它在类似 cygwin 的环境下运行,类路径看起来像“/c/pmd-bin-5.5.4/lib/pmd-core-5.5.4.jar:...”。但是,Java Runtime 在 Windows(而不是 cygwin)下运行,因此需要将路径转换为 "C:\pmd-bin-5.5.4\lib\pmd-core-5.5.4.jar;..."。请注意,使用了路径的 Windows 符号(驱动器号和分号作为路径分隔符)。
该脚本使用uname
命令来确定它是否在类似cygwin 的环境下运行。它只检查 "CYGWIN"。但是 git bash 使用例如"MINGW64_NT-10.0".
现在有the new issue #305,应该会尽快修复。
您可以手动修复脚本 bin/run.sh
,方法是将函数 is_cygwin
更改为:
is_cygwin() {
case "$(uname)" in
CYGWIN*|MINGW*) # look also for MINGW!!
readonly cygwin=true
;;
esac
# OS specific support. $var _must_ be set to either true or false.
if [ -z ${cygwin} ] ; then
readonly cygwin=false
fi
}