gpt4 book ai didi

java - 从 Gradle 运行 PMD 任务时出现 NoClassDefFoundError

转载 作者:行者123 更新时间:2023-12-01 12:04:34 25 4
gpt4 key购买 nike

我在通过 Gradle 运行 PMD 任务时收到 NoClassDefFoundError

我有 pmd-5.1.1.jarcommons-io-1.4.jar 以及所有其他 jar WebContent/WEB-INF/lib 目录。我的java文件位于目录src\com\company\project

Gradle 构建文件

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'pmd'

sourceSets.main.java.srcDirs = ['src']
webAppDirName = 'WebContent'

repositories {
flatDir { dirs "WebContent/WEB-INF/lib" }
}
dependencies {
providedCompile fileTree(dir: "WebContent/WEB-INF/lib", include: '*.jar')
}
war {
archiveName "ROOT.war"
}


错误日志

C:\MyWorkspace\MyProject>gradle build
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:war UP-TO-DATE
:assemble UP-TO-DATE
:pmdMain FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':pmdMain'.
> java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug
option to get more log output.

BUILD FAILED

Total time: 5.275 secs

这是我第一次尝试 Gradle。我能够构建并生成 WAR,但 PMD 令我失望。有人可以告诉我我做错了什么吗?预先感谢:)

最佳答案

我知道您已经找到了答案,但仅供引用,我正在添加问题的解决方案。

基本上你有非标准的项目结构。首先,Web 内容应放置在 src/main/webapp 下(源位于 src/main/java 下,依此类推)。其次,您不应该将诊断工具(pmd)放在WEB-INF/lib下。无需将此 jar 与整个应用程序一起部署到应用程序服务器。

也没有声明maven repo,因此无法解析依赖项(commons-ioasmjaxen等.) 并且 pmd 类路径下缺少依赖项(commons-io 等) - 请注意 依赖项< 中的 pmd 范围/em> block 。

Here您可以找到两个项目 - 具有标准和非标准项目布局。两者均已正确配置。

关于java - 从 Gradle 运行 PMD 任务时出现 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27720151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com