如何在bash中运行PMD

时间:2017-03-21 06:22:39

标签: pmd

我正在尝试使用命令“run.sh pmd -d -f -R”在git bash上运行PMD,但是我收到错误消息“无法找到或加载主类net.sourceforge.pmd.PMD ”。我已经尝试在环境变量中设置类路径但仍然得到错误。有谁知道问题是什么?

1 个答案:

答案 0 :(得分:0)

这似乎是PMD run.sh脚本中的一个错误。它支持cygwin环境,但git bash环境似乎不是一个vanilla 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
}