Maven 插件构建但由于 java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 而无法执行
Posted
技术标签:
【中文标题】Maven 插件构建但由于 java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 而无法执行【英文标题】:Maven plugin builds but can't execute due to java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 【发布时间】:2012-02-06 12:57:30 【问题描述】:我在 pom.xml 中使用 maven-jspc-plugin。
当我尝试执行 jsp-compile 目标(执行插件)时,我得到:
Caused by: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at org.apache.juli.logging.Slf4jLog.<init>(Slf4jLog.java:29)
at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:54)
at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:35)
at org.apache.sling.scripting.jsp.jasper.compiler.OriginalTldLocationsCache.<init>(OriginalTldLocationsCache.java:81)
at org.apache.sling.maven.jspc.JspcMojo.initServletContext(JspcMojo.java:426)
我已经尝试下载 maven-jspc-plugin 的(开放)源代码,并且我能够轻松地“mvn install”——我没有遇到任何构建问题,但是当我在我的项目中使用该构建时pom 它仍然崩溃并告诉我它找不到 LoggerFactory。
我已经记录了 Apache Sling 项目的一个问题,但没有取得太大进展。 https://issues.apache.org/jira/browse/SLING-2350 此链接包含更多故障排除信息以及使用 maven 插件的简单 maven 项目。下载 jspc-test.zip 和“mvn install”会导致我提到的错误。
另外,我在 org.apache.juli pom.xml 上达到了顶峰,它似乎根本没有列出任何依赖项。
任何关于如何解决的想法将不胜感激。
谢谢!
【问题讨论】:
您是否尝试在您的 POM 中添加 SLF4J api 依赖项? 是的 - 我尝试了 org.slf4j.api(多个版本)、org.slf4j.simple 以及其他一些 org.slf4j.slf4jlog13 和其他一些(LoggerFactory 在 org.slf4j .api 所以我认为这就是我所需要的)。我还尝试在本地构建时在 maven-jspc-plugin POM 中添加 slf4j api depdency。 【参考方案1】:插件依赖项在 POM 的不同部分提供:
<project>
<dependencies>
<!-- dependencies defined here don't get included for plugins -->
...
</dependencies>
<build>
<plugins>
<plugin>
.... jspc plugin section ....
<dependencies>
<dependency>
<!-- Try adding slf4j here --->
虽然听起来他们的 POM 是无效的,但如果它还没有指定 slf4j。
【讨论】:
链接到 juli pom.xml(来自 apache 的仓库):repository.apache.org/content/repositories/releases/org/apache/… 这行得通。我收到关于 log4j 不时被初始化的警告,然后是 NullPointer 异常,但我认为这些是不同的问题。以上是关于Maven 插件构建但由于 java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 而无法执行的主要内容,如果未能解决你的问题,请参考以下文章
如何使用不打包任何依赖项的 maven 程序集插件构建 jar?