[ 
http://jira.codehaus.org/browse/MNG-4207?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

John Casey updated MNG-4207:
----------------------------

         Assignee: John Casey
    Fix Version/s: 2.2.0

> Plugins that use ArtifactResolver with http repositories AND depend on log4j 
> run into ExceptionInInitializerError
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: MNG-4207
>                 URL: http://jira.codehaus.org/browse/MNG-4207
>             Project: Maven 2
>          Issue Type: Bug
>          Components: Artifacts and Repositories, Class Loading
>    Affects Versions: 2.2.0
>            Reporter: John Casey
>            Assignee: John Casey
>            Priority: Blocker
>             Fix For: 2.2.0
>
>         Attachments: maven-it-plugin-log4j.zip, pom.xml
>
>
> plugins that use log4j as a dependency and that also resolve artifacts using 
> the ArtifactResolver to access one or more http repositories are running into 
> a stacktrace as follows:
> {noformat}
> [FATAL ERROR] org.apache.maven.plugin.coreit.ItMojo#execute() caused a 
> linkage error (java.lang.ExceptionInInitializerError) and may be out-of-date. 
> Check the realms:
> [FATAL ERROR] Plugin realm = 
> app0.child-container[org.apache.maven.its.plugins:maven-it-plugin-log4j:2.1-SNAPSHOT]
> urls[0] = 
> file:/Users/jdcasey/.m2/repository/org/apache/maven/its/plugins/maven-it-plugin-log4j/2.1-SNAPSHOT/maven-it-plugin-log4j-2.1-SNAPSHOT.jar
> urls[1] = 
> file:/Users/jdcasey/.m2/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar
> urls[2] = 
> file:/Users/jdcasey/.m2/repository/log4j/log4j/1.2.14/log4j-1.2.14.jar
> [FATAL ERROR] Container realm = plexus.core
> urls[0] = 
> file:/Users/jdcasey/apps/maven/apache-maven-2.2.0-RC3-SNAPSHOT/lib/maven-2.2.0-RC3-SNAPSHOT-uber.jar
> [INFO] 
> ------------------------------------------------------------------------
> [ERROR] FATAL ERROR
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] null
> org/apache/log4j/Category
> [INFO] 
> ------------------------------------------------------------------------
> [DEBUG] Trace
> java.lang.ExceptionInInitializerError
>         at 
> org.apache.maven.wagon.shared.http.AbstractHttpClientWagon.openConnectionInternal(AbstractHttpClientWagon.java:153)
>         at 
> org.apache.maven.wagon.AbstractWagon.openConnection(AbstractWagon.java:105)
>         at 
> org.apache.maven.wagon.AbstractWagon.connect(AbstractWagon.java:207)
>         at 
> org.apache.maven.artifact.manager.DefaultWagonManager.getRemoteFile(DefaultWagonManager.java:439)
>         at 
> org.apache.maven.artifact.manager.DefaultWagonManager.getArtifact(DefaultWagonManager.java:372)
>         at 
> org.apache.maven.artifact.manager.DefaultWagonManager.getArtifact(DefaultWagonManager.java:327)
>         at 
> org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:216)
>         at 
> org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:90)
>         at org.apache.maven.plugin.coreit.ItMojo.execute(ItMojo.java:97)
>         at 
> org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:483)
>         at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:678)
>         at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:540)
>         at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:519)
>         at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371)
>         at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:332)
>         at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181)
>         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356)
>         at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137)
>         at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
>         at 
> org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:41)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
>         at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
>         at 
> org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
>         at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
> Caused by: hidden.org.apache.commons.logging.LogConfigurationException: 
> hidden.org.apache.commons.logging.LogConfigurationException: No suitable Log 
> constructor [Ljava.lang.Class;@986c47 for 
> hidden.org.apache.commons.logging.impl.Log4JLogger (Caused by 
> java.lang.NoClassDefFoundError: org/apache/log4j/Category) (Caused by 
> hidden.org.apache.commons.logging.LogConfigurationException: No suitable Log 
> constructor [Ljava.lang.Class;@986c47 for 
> hidden.org.apache.commons.logging.impl.Log4JLogger (Caused by 
> java.lang.NoClassDefFoundError: org/apache/log4j/Category))
>         at 
> hidden.org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:543)
>         at 
> hidden.org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:235)
>         at 
> hidden.org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:209)
>         at 
> hidden.org.apache.commons.logging.LogFactory.getLog(LogFactory.java:351)
>         at 
> hidden.org.apache.commons.httpclient.HttpClient.<clinit>(HttpClient.java:66)
>         ... 28 more
> Caused by: hidden.org.apache.commons.logging.LogConfigurationException: No 
> suitable Log constructor [Ljava.lang.Class;@986c47 for 
> hidden.org.apache.commons.logging.impl.Log4JLogger (Caused by 
> java.lang.NoClassDefFoundError: org/apache/log4j/Category)
>         at 
> hidden.org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:413)
>         at 
> hidden.org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:529)
>         ... 32 more
> Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/Category
>         at java.lang.Class.getDeclaredConstructors0(Native Method)
>         at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357)
>         at java.lang.Class.getConstructor0(Class.java:2671)
>         at java.lang.Class.getConstructor(Class.java:1629)
>         at 
> hidden.org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:410)
>         ... 33 more
> {noformat}
> The problem seems to come from some sort of conflict between the dependencies 
> of httpclient, which is now included in the Maven core as part of the 
> non-lightweight http wagon, and other users of log4j (plugins, mainly). Still 
> tracking down the exact cause of the problem, trying to determine how best to 
> fix it. I'm including Benjamin Bentmann's original test case for this issue, 
> since he's the one who has done most of the legwork at this point.
> instructions for the attached files (maven-it-plugin-log4j.zip and pom.xml):
> 1. unpack and install the IT plugin using Maven
> 2. Using the attached pom.xml as the project POM, try `mvn initialize -X`
> 3. observe the stacktrace that results.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to