commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From brian lee yung rowe <>
Subject Re: [logging] Invalid class loader hierarchy w/Ant+Hibernate+Logging (or the case of the unseen Log spectre)
Date Tue, 24 Aug 2004 14:30:36 GMT

The target I'm using within Ant is below. Unfortunately, the fork attribute is 
not allowed within taskdef elements. Also, I did check for other instances of 
the org.apache.commons.logging.Log class within every jar in my classpath; 
there happens to be one in Ant's lib (which is not in my classpath), but even 
when I removed that, I received the same error.

As I said before, if I remove the commons-logging package, then I get a 
NoClassDefFoundError, so if there were another instance of the class, why 
would I get this error?

<target name="schema" depends="init">
  <taskdef name="schemaexport"
     classpath="${java.class.path}:${src.conf}" />

    <fileset dir="${src.conf}">
      <include name="**/*.hbm.xml"/>

I am using a script that I wrote to check every Jar in the classpath for the 
Log class, and the only one that shows up is in the commons logging package. 
If you wish to see the script, I can post it in another email.


On Tuesday 24 August 2004 03:34 am, you wrote:
> On Mon, 23 Aug 2004 13:16:57 -0400, Brian Lee Yung Rowe
> <> wrote:
> > Hi:
> >
> > I'm using commons logging with Ant and Hibernate and am getting a class
> > loader error which has me scratching my head. I'm sending to this list as
> > I believe it to be a configuration issue with Logging as opposed to
> > Hibernate. Evidence otherwise is certainly welcome.
> >
> > First some background: I'm trying to run Hibernate's schema export
> > taskdef via Ant. The versions of salient libraries are below:
> >
> > Ant 1.6.1
> > Commons-Logging 1.0.4
> > Log4J 1.2.8
> > Hibernate 2.1
> >
> > This is the error I'm getting:
> > --- Nested Exception ---
> > java.lang.ExceptionInInitializerError
> >         at
> > net.sf.hibernate.tool.hbm2ddl.SchemaExportTask.getConfiguration(SchemaExp
> > at
> > net.sf.hibernate.tool.hbm2ddl.SchemaExportTask.execute(SchemaExportTask.j
> >ava:135) ....
> > Caused by: org.apache.commons.logging.LogConfigurationException:
> > org.apache.commons.logging.LogConfigurationException: Invalid class
> > loader hierarchy.  You have more than one version of
> > 'org.apache.commons.logging.Log' visible, which is not allowed.
> This message means what it says.
> If you have more than one version of org.apache.commons.logging.Log
> visible in the class path, you are pretty much guaranteed to have
> class loading issues, so the Commons Logging code tries to identify
> and catch this case as early as possible.
> When using Ant, I've found that it is almost always necessary to use a
> separate process for the actual application you are trying to run
> (such as using fork="true" on a <java> task), to avoid conficts
> between Ant's internal class loader (which includes, for example,
> everything in $ANT_HOME/lib) and the class path you have specified for
> that particular target.
> But there's no way to know what is actually going on for you, without
> more details about the Ant targets you are trying to execute.
> Craig

"to disappear in the minds of others is inevitable"
 mux space dot com

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message