maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Arnaud HERITIER (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (MNG-5842) java.lang.NoClassDefFoundError: org/slf4j/helpers/MessageFormatter with jetty plugin
Date Fri, 02 Oct 2015 14:26:27 GMT

    [ https://issues.apache.org/jira/browse/MNG-5842?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14941190#comment-14941190
] 

Arnaud HERITIER commented on MNG-5842:
--------------------------------------

Reported as MNG-5845, and MNG-5787. The problem comes from the fact that we are exporting
the slf4j-api artefact, thus plugins cannot use their own version but we forgot to export
the content of the package org/slf4j/helpers. Thus the `java.lang.ClassNotFoundException:
org.slf4j.helpers.MessageFormatter`

> java.lang.NoClassDefFoundError: org/slf4j/helpers/MessageFormatter with jetty plugin
> ------------------------------------------------------------------------------------
>
>                 Key: MNG-5842
>                 URL: https://issues.apache.org/jira/browse/MNG-5842
>             Project: Maven
>          Issue Type: Bug
>          Components: Class Loading
>    Affects Versions: 3.3.1, 3.3.3
>            Reporter: Jean-Christophe Gay
>
> When Maven is used with a different SLF4J implementation than slf4j-simple (in my case
logback to have colored logs), running jetty-maven-plugin fails.
> {code}
> Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T13:57:37+02:00)
> Maven home: /usr/local/Cellar/maven/3.3.3/libexec
> Java version: 1.8.0_40, vendor: Oracle Corporation
> Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/jre
> Default locale: fr_FR, platform encoding: UTF-8
> OS name: "mac os x", version: "10.10.3", arch: "x86_64", family: "mac"
> {code}
> {code}
> [WARNING] FAILED org.mortbay.jetty.plugin.JettyServer@66c4005: java.lang.NoClassDefFoundError:
org/slf4j/helpers/MessageFormatter
> java.lang.ClassNotFoundException: org.slf4j.helpers.MessageFormatter
> 	at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
~[plexus-classworlds-2.5.2.jar:na]
> 	at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
~[plexus-classworlds-2.5.2.jar:na]
> 	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247) ~[plexus-classworlds-2.5.2.jar:na]
> 	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239) ~[plexus-classworlds-2.5.2.jar:na]
> 	... 21 common frames omitted
> Wrapped by: java.lang.NoClassDefFoundError: org/slf4j/helpers/MessageFormatter
> 	at org.eclipse.jetty.util.log.JettyAwareLogger.log(JettyAwareLogger.java:619) ~[jetty-util-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.eclipse.jetty.util.log.JettyAwareLogger.info(JettyAwareLogger.java:314) ~[jetty-util-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.eclipse.jetty.util.log.Slf4jLog.info(Slf4jLog.java:74) ~[jetty-util-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.eclipse.jetty.server.Server.doStart(Server.java:271) ~[jetty-server-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.mortbay.jetty.plugin.JettyServer.doStart(JettyServer.java:65) ~[jetty-maven-plugin-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
~[jetty-util-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:520)
[jetty-maven-plugin-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:365) [jetty-maven-plugin-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.mortbay.jetty.plugin.JettyRunMojo.execute(JettyRunMojo.java:521) [jetty-maven-plugin-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
[maven-core-3.3.1.jar:3.3.1]
> 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) [maven-core-3.3.1.jar:3.3.1]
> 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) [maven-core-3.3.1.jar:3.3.1]
> 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) [maven-core-3.3.1.jar:3.3.1]
> 	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
[maven-core-3.3.1.jar:3.3.1]
> 	at io.takari.maven.builder.smart.SmartBuilderImpl.buildProject(SmartBuilderImpl.java:275)
[takari-smart-builder-0.4.0.jar:0.4.0]
> 	at io.takari.maven.builder.smart.SmartBuilderImpl$ProjectBuildTask.run(SmartBuilderImpl.java:101)
[takari-smart-builder-0.4.0.jar:0.4.0]
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_40]
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_40]
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_40]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_40]
> 	at java.lang.Thread.run(Thread.java:745) [na:1.8.0_40]
> java.lang.NoClassDefFoundError: org/slf4j/helpers/MessageFormatter
> 	at org.eclipse.jetty.util.log.JettyAwareLogger.log(JettyAwareLogger.java:619) ~[jetty-util-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.eclipse.jetty.util.log.JettyAwareLogger.info(JettyAwareLogger.java:314) ~[jetty-util-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.eclipse.jetty.util.log.Slf4jLog.info(Slf4jLog.java:74) ~[jetty-util-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.eclipse.jetty.server.Server.doStart(Server.java:271) ~[jetty-server-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.mortbay.jetty.plugin.JettyServer.doStart(JettyServer.java:65) ~[jetty-maven-plugin-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
~[jetty-util-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:520)
[jetty-maven-plugin-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:365) [jetty-maven-plugin-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.mortbay.jetty.plugin.JettyRunMojo.execute(JettyRunMojo.java:521) [jetty-maven-plugin-7.6.16.v20140903.jar:7.6.16.v20140903]
> 	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
[maven-core-3.3.1.jar:3.3.1]
> 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) [maven-core-3.3.1.jar:3.3.1]
> 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) [maven-core-3.3.1.jar:3.3.1]
> 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) [maven-core-3.3.1.jar:3.3.1]
> 	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
[maven-core-3.3.1.jar:3.3.1]
> 	at io.takari.maven.builder.smart.SmartBuilderImpl.buildProject(SmartBuilderImpl.java:275)
[takari-smart-builder-0.4.0.jar:0.4.0]
> 	at io.takari.maven.builder.smart.SmartBuilderImpl$ProjectBuildTask.run(SmartBuilderImpl.java:101)
[takari-smart-builder-0.4.0.jar:0.4.0]
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_40]
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_40]
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_40]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_40]
> 	at java.lang.Thread.run(Thread.java:745) [na:1.8.0_40]
> Caused by: java.lang.ClassNotFoundException: org.slf4j.helpers.MessageFormatter
> 	at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
~[plexus-classworlds-2.5.2.jar:na]
> 	at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
~[plexus-classworlds-2.5.2.jar:na]
> 	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247) ~[plexus-classworlds-2.5.2.jar:na]
> 	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239) ~[plexus-classworlds-2.5.2.jar:na]
> 	... 21 common frames omitted
> [INFO] Jetty server exiting.
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD FAILURE
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 1.001 s (Wall Clock)
> [INFO] Finished at: 2015-06-15T13:05:18+02:00
> [INFO] Final Memory: 17M/206M
> [INFO] ------------------------------------------------------------------------
> [ERROR] Failed to execute goal org.mortbay.jetty:jetty-maven-plugin:7.6.16.v20140903:run
(default-cli) on project example-webapp: Execution default-cli of goal org.mortbay.jetty:jetty-maven-plugin:7.6.16.v20140903:run
failed: A required class was missing while executing org.mortbay.jetty:jetty-maven-plugin:7.6.16.v20140903:run:
org/slf4j/helpers/MessageFormatter
> [ERROR] -----------------------------------------------------
> [ERROR] realm =    plugin>org.mortbay.jetty:jetty-maven-plugin:7.6.16.v20140903
> [ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
> [ERROR] urls[0] = file:/Users/jcgay/.m2/repository/org/mortbay/jetty/jetty-maven-plugin/7.6.16.v20140903/jetty-maven-plugin-7.6.16.v20140903.jar
> [ERROR] urls[1] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/jetty-util/7.6.16.v20140903/jetty-util-7.6.16.v20140903.jar
> [ERROR] urls[2] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/jetty-webapp/7.6.16.v20140903/jetty-webapp-7.6.16.v20140903.jar
> [ERROR] urls[3] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/jetty-xml/7.6.16.v20140903/jetty-xml-7.6.16.v20140903.jar
> [ERROR] urls[4] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/jetty-servlet/7.6.16.v20140903/jetty-servlet-7.6.16.v20140903.jar
> [ERROR] urls[5] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/jetty-security/7.6.16.v20140903/jetty-security-7.6.16.v20140903.jar
> [ERROR] urls[6] = file:/Users/jcgay/.m2/repository/org/sonatype/sisu/sisu-inject-bean/2.1.1/sisu-inject-bean-2.1.1.jar
> [ERROR] urls[7] = file:/Users/jcgay/.m2/repository/org/sonatype/sisu/sisu-guice/2.9.4/sisu-guice-2.9.4-no_aop.jar
> [ERROR] urls[8] = file:/Users/jcgay/.m2/repository/org/codehaus/plexus/plexus-utils/2.0.6/plexus-utils-2.0.6.jar
> [ERROR] urls[9] = file:/Users/jcgay/.m2/repository/org/sonatype/aether/aether-util/1.11/aether-util-1.11.jar
> [ERROR] urls[10] = file:/Users/jcgay/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
> [ERROR] urls[11] = file:/Users/jcgay/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
> [ERROR] urls[12] = file:/Users/jcgay/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
> [ERROR] urls[13] = file:/Users/jcgay/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
> [ERROR] urls[14] = file:/Users/jcgay/.m2/repository/org/apache/maven/plugin-tools/maven-plugin-tools-api/2.9/maven-plugin-tools-api-2.9.jar
> [ERROR] urls[15] = file:/Users/jcgay/.m2/repository/org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.jar
> [ERROR] urls[16] = file:/Users/jcgay/.m2/repository/org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.jar
> [ERROR] urls[17] = file:/Users/jcgay/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar
> [ERROR] urls[18] = file:/Users/jcgay/.m2/repository/net/sf/jtidy/jtidy/r938/jtidy-r938.jar
> [ERROR] urls[19] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/jetty-plus/7.6.16.v20140903/jetty-plus-7.6.16.v20140903.jar
> [ERROR] urls[20] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/orbit/javax.transaction/1.1.1.v201105210645/javax.transaction-1.1.1.v201105210645.jar
> [ERROR] urls[21] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/jetty-jndi/7.6.16.v20140903/jetty-jndi-7.6.16.v20140903.jar
> [ERROR] urls[22] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/jetty-server/7.6.16.v20140903/jetty-server-7.6.16.v20140903.jar
> [ERROR] urls[23] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/orbit/javax.servlet/2.5.0.v201103041518/javax.servlet-2.5.0.v201103041518.jar
> [ERROR] urls[24] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/jetty-continuation/7.6.16.v20140903/jetty-continuation-7.6.16.v20140903.jar
> [ERROR] urls[25] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/orbit/javax.mail.glassfish/1.4.1.v201005082020/javax.mail.glassfish-1.4.1.v201005082020.jar
> [ERROR] urls[26] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/orbit/javax.activation/1.1.0.v201105071233/javax.activation-1.1.0.v201105071233.jar
> [ERROR] urls[27] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/jetty-jmx/7.6.16.v20140903/jetty-jmx-7.6.16.v20140903.jar
> [ERROR] urls[28] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/jetty-annotations/7.6.16.v20140903/jetty-annotations-7.6.16.v20140903.jar
> [ERROR] urls[29] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/orbit/javax.annotation/1.1.0.v201108011116/javax.annotation-1.1.0.v201108011116.jar
> [ERROR] urls[30] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/orbit/org.objectweb.asm/3.1.0.v200803061910/org.objectweb.asm-3.1.0.v200803061910.jar
> [ERROR] urls[31] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/jetty-websocket/7.6.16.v20140903/jetty-websocket-7.6.16.v20140903.jar
> [ERROR] urls[32] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/jetty-io/7.6.16.v20140903/jetty-io-7.6.16.v20140903.jar
> [ERROR] urls[33] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/jetty-http/7.6.16.v20140903/jetty-http-7.6.16.v20140903.jar
> [ERROR] urls[34] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/jetty-jsp/7.6.16.v20140903/jetty-jsp-7.6.16.v20140903.jar
> [ERROR] urls[35] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/orbit/javax.servlet.jsp/2.1.0.v201105211820/javax.servlet.jsp-2.1.0.v201105211820.jar
> [ERROR] urls[36] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/orbit/org.apache.jasper.glassfish/2.1.0.v201110031002/org.apache.jasper.glassfish-2.1.0.v201110031002.jar
> [ERROR] urls[37] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/orbit/javax.servlet.jsp.jstl/1.2.0.v201105211821/javax.servlet.jsp.jstl-1.2.0.v201105211821.jar
> [ERROR] urls[38] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/orbit/org.apache.taglibs.standard.glassfish/1.2.0.v201112081803/org.apache.taglibs.standard.glassfish-1.2.0.v201112081803.jar
> [ERROR] urls[39] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/orbit/javax.el/2.1.0.v201105211819/javax.el-2.1.0.v201105211819.jar
> [ERROR] urls[40] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/orbit/com.sun.el/1.0.0.v201105211818/com.sun.el-1.0.0.v201105211818.jar
> [ERROR] urls[41] = file:/Users/jcgay/.m2/repository/org/eclipse/jetty/orbit/org.eclipse.jdt.core/3.7.1/org.eclipse.jdt.core-3.7.1.jar
> [ERROR] Number of foreign imports: 1
> [ERROR] import: Entry[import  from realm ClassRealm[project>fr.jcgay.server-notifier:example-webapp:0.2-SNAPSHOT,
parent: ClassRealm[maven.api, parent: null]]]
> [ERROR]
> [ERROR] -----------------------------------------------------: org.slf4j.helpers.MessageFormatter
> {code}
> I reproduced the error with Maven 3.3.1, 3.3.3 and latest jetty plugin versions:
> {code:xml}
>             <plugin>
>                 <groupId>org.mortbay.jetty</groupId>
>                 <artifactId>jetty-maven-plugin</artifactId>
>                 <version>7.6.16.v20140903</version>
>             </plugin>
>             
>             <plugin>
>                 <groupId>org.mortbay.jetty</groupId>
>                 <artifactId>jetty-maven-plugin</artifactId>
>                 <version>8.1.16.v20140903</version>
>             </plugin>
>             
>             <plugin>
>                 <groupId>org.eclipse.jetty</groupId>
>                 <artifactId>jetty-maven-plugin</artifactId>
>                 <version>9.3.0.RC1</version>
>             </plugin>
> {code}
> It works perfectly fine with Maven 3.2.5.
> I assume that the problem is not limited to the jetty plugin but to any plugin using
slf4j-api classes from packages different than org.slf4j.* and org.slf4j.spi (exposed in extension.xml).
> I have tried running jetty with a patched maven-core.jar (adding <exportedPackage>org.slf4j.helpers.*</exportedPackage>
into META-INF/maven/extension.xml) and it runs fine.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message