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插件和依赖关系与IT的关系

Maven 构建失败 - 编译器插件

如何使用不打包任何依赖项的 maven 程序集插件构建 jar?

由于maven插件错误,spring boot maven项目未编译

使用maven插件构建docker镜像

Maven实现多个项目关联自动化构建(maven-invoker-plugin插件的使用)