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

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

    Description: 
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.

  was:
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.


> 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