Hmm, but GWT doesn't use log4j internally.  Is it possible you've got
conflicting versions, one on the system classpath and one in your war
directory?

On Wed, Mar 25, 2009 at 4:40 PM, Vitali Lovich <vlov...@gmail.com> wrote:

> og4j:ERROR A "org.apache.log4j.ConsoleAppender" object is not assignable to
> a "org.apache.log4j.Appender" variable.
> log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
> log4j:ERROR [sun.misc.launcher$appclassloa...@64601bb1] whereas object of
> type
> log4j:ERROR "org.apache.log4j.ConsoleAppender" was loaded by
> [contextloa...@null([file:/home/vlovich/workspace/sacred_heart/war/WEB-INF/classes/,
> file:/home/vlovich/workspace/sacred_heart/war/WEB-INF/lib/gwt-servlet.jar,
> file:/home/vlovich/workspace/sacred_heart/war/WEB-INF/lib/log4j-1.2.15.jar,
> file:/home/vlovich/workspace/sacred_heart/war/WEB-INF/lib/mysql-connector-java-5.1.7-bin.jar])
> /
> com.google.gwt.dev.shell.jetty.jettylauncher$webappcontextwithreloa...@e1651fe
> ].
> log4j:ERROR Could not instantiate appender named "dest".
> log4j:WARN No appenders could be found for logger
> (org.apache.jasper.compiler.JspRuntimeContext).
> log4j:WARN Please initialize the log4j system properly.
>
> Seems like GWT is loading log4j (at least partially) but then I'm using the
> actual log4j form the website, so the class loader throws up.  This could
> also be fixed by just bundling log4j into gwt-servlet - odds are, people are
> going to want to use log4j on the server anyways.
>
>
> On Wed, Mar 25, 2009 at 4:17 PM, Scott Blum <sco...@google.com> wrote:
>
>> Vitali, can you remind me what your issue is?
>>
>>
>> On Wed, Mar 25, 2009 at 4:10 PM, Vitali Lovich <vlov...@gmail.com> wrote:
>>
>>> This didn't fix my log4j issue, but there's a workaround:
>>>
>>> adding -Dlog4j.ignoreTCL to the VM arguments fixes it.
>>>
>>> On Wed, Mar 25, 2009 at 3:51 PM, Toby Reyelts <to...@google.com> wrote:
>>>
>>>> Overall, the change to treat server classes vs system classes
>>>> separately, such that system classes are "API classes" and server classes
>>>> are "implementation classes" looks good.
>>>>
>>>> I'm concerned that there will still be places where things will clash -
>>>> such as the sharing of log4j across both server and webapps. Given the
>>>> complexity of the situation, I understand the desire to change behavior as
>>>> little as possible in this area, though. There's also an argument that,
>>>> since this is the way Jetty currently functions, you're just exposing Jetty
>>>> behavior, as is.
>>>>
>>>> I think the situation would be simpler if GWT didn't treat the system
>>>> classpath as a "user-level" classpath.
>>>>
>>>>
>>>> On Wed, Mar 25, 2009 at 9:15 AM, <codesite-nore...@google.com> wrote:
>>>>
>>>>>
>>>>> Author: sco...@google.com
>>>>> Date: Wed Mar 25 05:43:19 2009
>>>>> New Revision: 5078
>>>>>
>>>>> Modified:
>>>>>
>>>>>
>>>>> releases/1.6/dev/core/src/com/google/gwt/dev/shell/jetty/JettyLauncher.java
>>>>>
>>>>> Log:
>>>>> Amending r5077:
>>>>> - Catch ClassNotFound in outside loader and allow internal load
>>>>> - Allow "system" resources to be loaded internally if they're not found
>>>>> externally
>>>>> - jat suggestion to extract constant
>>>>> - Fix comments
>>>>>
>>>>> Review by: tobyr (TBR)
>>>>>
>>>>> Modified:
>>>>>
>>>>> releases/1.6/dev/core/src/com/google/gwt/dev/shell/jetty/JettyLauncher.java
>>>>>
>>>>> ==============================================================================
>>>>> ---
>>>>>
>>>>> releases/1.6/dev/core/src/com/google/gwt/dev/shell/jetty/JettyLauncher.java
>>>>> (original)
>>>>> +++
>>>>>
>>>>> releases/1.6/dev/core/src/com/google/gwt/dev/shell/jetty/JettyLauncher.java
>>>>> Wed Mar 25 05:43:19 2009
>>>>> @@ -249,6 +249,8 @@
>>>>>       */
>>>>>      private class WebAppClassLoaderExtension extends WebAppClassLoader
>>>>> {
>>>>>
>>>>> +      private static final String META_INF_SERVICES =
>>>>> "META-INF/services/";
>>>>> +
>>>>>        public WebAppClassLoaderExtension() throws IOException {
>>>>>          super(bootStrapOnlyClassLoader, WebAppContextWithReload.this);
>>>>>        }
>>>>> @@ -257,17 +259,21 @@
>>>>>        public URL findResource(String name) {
>>>>>          // Specifically for
>>>>> META-INF/services/javax.xml.parsers.SAXParserFactory
>>>>>          String checkName = name;
>>>>> -        if (checkName.startsWith("META-INF/services/")) {
>>>>> -          checkName =
>>>>> checkName.substring("META-INF/services/".length());
>>>>> +        if (checkName.startsWith(META_INF_SERVICES)) {
>>>>> +          checkName = checkName.substring(META_INF_SERVICES.length());
>>>>>          }
>>>>>
>>>>> -        // For system/server path, just try the outside world quietly.
>>>>> +        // For a system path, load from the outside world.
>>>>> +        URL found;
>>>>>          if (isSystemPath(checkName)) {
>>>>> -          return systemClassLoader.getResource(name);
>>>>> +          found = systemClassLoader.getResource(name);
>>>>> +          if (found != null) {
>>>>> +            return found;
>>>>> +          }
>>>>>          }
>>>>>
>>>>>          // Always check this ClassLoader first.
>>>>> -        URL found = super.findResource(name);
>>>>> +        found = super.findResource(name);
>>>>>          if (found != null) {
>>>>>            return found;
>>>>>          }
>>>>> @@ -303,14 +309,18 @@
>>>>>
>>>>>        @Override
>>>>>        protected Class<?> findClass(String name) throws
>>>>> ClassNotFoundException {
>>>>> -        // For system/server path, just try the outside world quietly.
>>>>> +        // For system path, always prefer the outside world.
>>>>>          if (isSystemPath(name)) {
>>>>> -          return systemClassLoader.loadClass(name);
>>>>> +          try {
>>>>> +            return systemClassLoader.loadClass(name);
>>>>> +          } catch (ClassNotFoundException e) {
>>>>> +          }
>>>>>          }
>>>>>
>>>>>          try {
>>>>>            return super.findClass(name);
>>>>>          } catch (ClassNotFoundException e) {
>>>>> +          // Don't allow server classes to be loaded from the outside.
>>>>>            if (isServerPath(name)) {
>>>>>              throw e;
>>>>>            }
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to