[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[equinox-dev] 2 versions of log4j-core.jar
|
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