Jeppe Nejsum Madsen wrote:
After having upgraded from 0.5.2 to trunk, I can no longer run the
jettyRun or jettyRunWar tasks due to the error below

Note that the same project runs fine with mvn jetty:run, mvn
jetty:run-war and the war generated by gradle works fine when deployed
to the real jetty instance. This leads me to think it has something to
do with the jettyRun task. Any clues?


The problem is basically due to two different versions of log4j being visible to your webapp: one bundled in your war, and the other visible from the system classloader.

We have a couple of options for fixing this:

1. Update the version of log4j loaded by the system classloader (that is, the version in $gradleHome/lib). Currently, we're using log4j-over-slf4j. To fix the problem, we'd have to replace this with log4j and configure in a bridging adapter to route the messages to slf4j or logback.

2. Configure jetty so that the log4j loaded by the system classloader is not visible to the webapp. Jetty by default treats log4j as a system library, which means that any version in the war is ignored. It is easy enough to configure Jetty to treat log4j as a non-system library, so that the version in the war is used instead.

One implication of the current setup is that any logging the web app does using commons-logging, slf4j or log4j is automatically routed to Gradle's logging system. This can be really useful, as logging just works from the web app without having to do any configuration. The downside is that it conflicts with any logging configuration done by the web app (as in your case). If we choose option 1, this will continue to be the case. If we choose option 2, the conflicts will stop happening, but so will the automatic bridging.

For now, I think option 2 is the safer option. We can re-add the bridging to Gradle logging later, in a way that will not lead to version conflicts.

/Jeppe

Java.lang.IllegalAccessError: tried to access method
org.apache.log4j.Logger.<init>(Ljava/lang/String;)V from class
org.apache.log4j.spi.RootLogger
        at org.apache.log4j.spi.RootLogger.<init>(RootLogger.java:43)
        at org.apache.log4j.LogManager.<clinit>(LogManager.java:78)
        at net.liftweb.util.LogBoot$.log4jIsConfigured$1(Log.scala:113)
        at net.liftweb.util.LogBoot$._log4JSetup(Log.scala:129)
        at net.liftweb.util.LogBoot$$anonfun$2.apply(Log.scala:95)
        at net.liftweb.util.LogBoot$$anonfun$2.apply(Log.scala:95)
        at net.liftweb.util.LogBoot$.checkConfig(Log.scala:93)
        at 
net.liftweb.util.LogBoot$.net$liftweb$util$LogBoot$$_logger(Log.scala:139)
        at net.liftweb.util.LogBoot$$anonfun$3.apply(Log.scala:141)
        at net.liftweb.util.LogBoot$$anonfun$3.apply(Log.scala:141)
        at net.liftweb.http.LiftRules$.<init>(LiftRules.scala:654)
        at net.liftweb.http.LiftRules$.<clinit>(LiftRules.scala)
        at 
net.liftweb.http.provider.servlet.ServletFilterProvider$class.init(ServletFilterProvider.scala:17)
        at net.liftweb.http.LiftFilter.init(LiftServlet.scala:481)
        at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
        at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at 
org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:620)
        at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
        at 
org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1234)
        at 
org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
        at 
org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:460)
        at 
org.gradle.api.plugins.jetty.JettyPluginWebAppContext.doStart(JettyPluginWebAppContext.java:124)
        at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at 
org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
        at 
org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
        at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at 
org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
        at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at 
org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
        at org.mortbay.jetty.Server.doStart(Server.java:222)
        at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at 
org.gradle.api.plugins.jetty.JettyPluginServer.start(JettyPluginServer.java:112)
        at 
org.gradle.api.plugins.jetty.AbstractJettyRunTask.startJettyInternal(AbstractJettyRunTask.java:277)
        at 
org.gradle.api.plugins.jetty.AbstractJettyRunTask.startJetty(AbstractJettyRunTask.java:232)
        at 
org.gradle.api.plugins.jetty.AbstractJettyRunTask.start(AbstractJettyRunTask.java:203)
        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:597)
        at 
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:234)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1062)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:893)
        at 
org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:744)
        at 
org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:727)
        at 
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(ScriptBytecodeAdapter.java:163)
        at 
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethod0(ScriptBytecodeAdapter.java:188)
        at 
org.gradle.api.internal.project.AnnotationProcessingTaskFactory$_createTask_closure1_closure2.doCall(AnnotationProcessingTaskFactory.groovy:30)
        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:597)
        at 
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:234)
        at 
org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:893)
        at 
org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39)
        at 
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
        at org.gradle.api.ClosureTaskAction.execute(DefaultTask.groovy:91)
        at org.gradle.api.ClosureTaskAction.execute(DefaultTask.groovy)
        at org.gradle.api.internal.AbstractTask.doExecute(AbstractTask.java:257)
        at org.gradle.api.internal.AbstractTask.execute(AbstractTask.java:209)
        at 
org.gradle.execution.DefaultTaskExecuter.executeTask(DefaultTaskExecuter.java:153)
        at 
org.gradle.execution.DefaultTaskExecuter.doExecute(DefaultTaskExecuter.java:144)
        at 
org.gradle.execution.DefaultTaskExecuter.execute(DefaultTaskExecuter.java:67)
        at 
org.gradle.execution.TaskNameResolvingBuildExecuter.execute(TaskNameResolvingBuildExecuter.java:88)
        at org.gradle.Gradle.loadAndConfigureAndRun(Gradle.java:167)
        at org.gradle.Gradle.access$000(Gradle.java:56)
        at org.gradle.Gradle$1.run(Gradle.java:89)
        at org.gradle.Gradle.doBuild(Gradle.java:145)
        at org.gradle.Gradle.run(Gradle.java:87)
        at org.gradle.Main.execute(Main.java:83)
        at org.gradle.Main.main(Main.java:42)
        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:597)
        at org.gradle.BootstrapMain.main(BootstrapMain.java:53)

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

   http://xircles.codehaus.org/manage_email


Reply via email to