Hi Tom,

Resources from you classpath should not be leaking into your OSGi
environment unless the "osgi.parentClassLoader" is set to either app or
framework and you're doing something like setting
'org.osgi.framework.bootdelegation=*'.
Can you look at these settings and tell us a bit about the environment
you're running.
Also, this is really the dev list. Could we continue this thread in the
user newsgroup -- eclipse.technology.equinox.

Thanks.
-Simon

[email protected] wrote on 03/05/2009 07:29:45 PM:

> [image removed]
>
> [equinox-dev] 2 versions of log4j-core.jar
>
> Tom Hsu
>
> to:
>
> Equinox development mailing list
>
> 03/05/2009 07:32 PM
>
> Sent by:
>
> [email protected]
>
> Please respond to Equinox development mailing list
>
> Hi experts,
>
> In the midst of the integrating a osgi/eclipse based program to an
> existing Java program, I am running into a problem with the double
> loading of log4j-core.jar. The original java program already has a
> log4j-core.jar loaded as part of the CLASSPATH when it is started. The
> said program in turns will launch the new osgi/eclipse based program
> through EclipseStarter:
> ***
> EclipseStarter.setInitialProperties(buildDefaultProps());
> EclipseStarter.startup(launcherArgs, null);
> EclipseStarter.run(launcherArgs);
> ***
>
> The osgi/eclipse program has another version of the log4-core.jar in the
> org.apache.jakarta_log4j_0.0.0. bundle. This bundle is a required
> bundle. As you can see, that the same classes will be loaded twice when
> my original Java program attempts to load the osgi/eclipse program.
> Hence I am getting a class cast error:
> ***
> log4j:ERROR Could not create an Appender. Reported error follows.
> java.lang.ClassCastException: org.apache.log4j.ConsoleAppender cannot be
> cast to org.apache.log4j.Appender
>   at
>
org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:165)

>
>   at
> org.apache.log4j.xml.DOMConfigurator.findAppenderByName
> (DOMConfigurator.java:140)
>
>   at
> org.apache.log4j.xml.DOMConfigurator.findAppenderByReference
> (DOMConfigurator.java:153)
>
>   at
> org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement
> (DOMConfigurator.java:415)
>
>   at
> org.apache.log4j.xml.DOMConfigurator.parseRoot(DOMConfigurator.java:384)
>   at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:783)
>   at
>
org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:666)
>   at
>
org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:616)
>   at
>
org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:584)
>   at
org.apache.log4j.xml.XMLWatchdog.doOnChange(DOMConfigurator.java:815)
>   at
>
org.apache.log4j.helpers.FileWatchdog.checkAndConfigure(FileWatchdog.java:80)

>
>   at org.apache.log4j.helpers.FileWatchdog.<init>(FileWatchdog.java:49)
>   at org.apache.log4j.xml.XMLWatchdog.<init>(DOMConfigurator.java:807)
>   at
> org.apache.log4j.xml.DOMConfigurator.configureAndWatch
> (DOMConfigurator.java:574)
>
>   at
> org.apache.log4j.xml.DOMConfigurator.configureAndWatch
> (DOMConfigurator.java:557)
>
>    ...
> ***
>
> Can someone advise me on how to solve this issue? I am thinking about
> ways like:
> 1. Make the OSGI know that log4j-core.jar is already present so don't
> load it again. Not sure how to do this or if this is even feasible.
> 2. Modify the bundle requirement of the various bundles in the plugins
> directory so the org.jakarta bundle will not be needed? I'd like to
> avoid this since this means I have to change someone else's nicely
> packaged bundles.
>
> Regards,
> Tom
> _______________________________________________
> equinox-dev mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/equinox-dev
_______________________________________________
equinox-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Reply via email to