You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by Sascha Freitag <fr...@objtec.com> on 2003/01/21 15:09:17 UTC

java.lang.LinkageError: duplicate class definition

Hi,

I try to add some jar's to the classpath of the AntClassLoader in my own
task. Because adding them in my own task do not work, I added the jar's in
the build file to the path of the task definition.

    <taskdef name="genejb"
classname="com.objtec.devtools.genejb.GenEjbAntTask">
        <classpath>
            <pathelement location="${lib.dir}/objtec_devtools.jar"/>
            <pathelement location="${classes.dir}"/>
	        <fileset dir="${lib.dir}">
	            <include name="**/*.jar"/>
	        </fileset>
        </classpath>
    </taskdef>

But the problem still exists. However, the class path looks fine, if I print
it out with the method getClasspath() of the class loader. Since I changed
the log code of the AntClassLoader, I knew that not finding the class is the
problem. The original error message from the IOException is
"java.lang.LinkageError: duplicate class definition:
com/objtec/util/query/Query". But the class is only in one jar (at least I
could it only find in one). Slowly but surely I run out of idea's and I will
have to add all the jar's to the class path of the system class loader even
if I don't like. To write my own class loader which do not delegate coudl
also be a solution. But I will only do that, if I know that it really solves
the problem. I'm happy about any other idea or a solution.


Sascha

Here the section of the console output which shows the problem:


Project base dir set to: C:\workspace\address
      [ant] calling target [default] in build file
C:\workspace\masterbuild\genejb.xml
parsing buildfile C:\workspace\masterbuild\genejb.xml with URI =
file:C:/workspace/masterbuild/genejb.xml
Project base dir set to: C:\workspace\address
Override ignored for property component.castorresourcetype
Override ignored for property component.entityclasses
Override ignored for property component.interfaceclasses
Override ignored for property component.messageclasses
Override ignored for property component.generatecastor
Override ignored for property component.dependency.path
GenEjbAntTask const
GenEjbTask clsLoader:org.apache.tools.ant.AntClassLoader@33eca
Thread[main,5,main]
AbstractGenerator
classpath:C:\workspace\lib\objtec_devtools.jar;C:\workspace\address\classes;
C:\workspace\lib\objtec_base.jar;C:\
workspace\lib\objtec_castor.jar;C:\workspace\lib\objtec_domain_entity.jar;C:
\workspace\lib\objtec_log.jar;C:\workspace\lib\objtec_
security.jar;C:\workspace\lib\objtec_se_engine.jar;C:\workspace\lib\objtec_s
wing.jar;C:\workspace\lib\objtec_system.jar;C:\workspa
ce\lib\objtec_textadmin.jar;C:\workspace\lib\objtec_textservice_client.jar;C
:\workspace\lib\objtec_textservice_server.jar;C:\works
pace\lib\objtec_util.jar;C:\workspace\lib\objtec_validation.jar
Build sequence for target `generate' is [generate]
Complete build sequence is [generate]

generate:
     [echo] Interface:  - castor: true - ejb: false - dependency:
lib/objtec_util.jar lib/objtec_base.jar
   [genejb] start execute of GenEjbAntTask
   [genejb] AbstractGenerator
clsLoader:org.apache.tools.ant.AntClassLoader@33eca Thread[main,5,main]
   [genejb] AbstractGenerator
classpath:C:\workspace\lib\objtec_devtools.jar;C:\workspace\address\classes;
C:\workspace\lib\objtec_
base.jar;C:\workspace\lib\objtec_castor.jar;C:\workspace\lib\objtec_domain_e
ntity.jar;C:\workspace\lib\objtec_log.jar;C:\workspace
\lib\objtec_security.jar;C:\workspace\lib\objtec_se_engine.jar;C:\workspace\
lib\objtec_swing.jar;C:\workspace\lib\objtec_system.ja
r;C:\workspace\lib\objtec_textadmin.jar;C:\workspace\lib\objtec_textservice_
client.jar;C:\workspace\lib\objtec_textservice_server.
jar;C:\workspace\lib\objtec_util.jar;C:\workspace\lib\objtec_validation.jar
   [genejb] AbstractGenerator
clsLoader:org.apache.tools.ant.AntClassLoader@33eca Thread[main,5,main]
   [genejb] AbstractGenerator
classpath:C:\workspace\lib\objtec_devtools.jar;C:\workspace\address\classes;
C:\workspace\lib\objtec_
base.jar;C:\workspace\lib\objtec_castor.jar;C:\workspace\lib\objtec_domain_e
ntity.jar;C:\workspace\lib\objtec_log.jar;C:\workspace
\lib\objtec_security.jar;C:\workspace\lib\objtec_se_engine.jar;C:\workspace\
lib\objtec_swing.jar;C:\workspace\lib\objtec_system.ja
r;C:\workspace\lib\objtec_textadmin.jar;C:\workspace\lib\objtec_textservice_
client.jar;C:\workspace\lib\objtec_textservice_server.
jar;C:\workspace\lib\objtec_util.jar;C:\workspace\lib\objtec_validation.jar
   [genejb] AbstractGenerator
clsLoader:org.apache.tools.ant.AntClassLoader@33eca Thread[main,5,main]
   [genejb] AbstractGenerator
classpath:C:\workspace\lib\objtec_devtools.jar;C:\workspace\address\classes;
C:\workspace\lib\objtec_
base.jar;C:\workspace\lib\objtec_castor.jar;C:\workspace\lib\objtec_domain_e
ntity.jar;C:\workspace\lib\objtec_log.jar;C:\workspace
\lib\objtec_security.jar;C:\workspace\lib\objtec_se_engine.jar;C:\workspace\
lib\objtec_swing.jar;C:\workspace\lib\objtec_system.ja
r;C:\workspace\lib\objtec_textadmin.jar;C:\workspace\lib\objtec_textservice_
client.jar;C:\workspace\lib\objtec_textservice_server.
jar;C:\workspace\lib\objtec_util.jar;C:\workspace\lib\objtec_validation.jar
   [genejb] AbstractGenerator
clsLoader:org.apache.tools.ant.AntClassLoader@33eca Thread[main,5,main]
   [genejb] AbstractGenerator
classpath:C:\workspace\lib\objtec_devtools.jar;C:\workspace\address\classes;
C:\workspace\lib\objtec_
base.jar;C:\workspace\lib\objtec_castor.jar;C:\workspace\lib\objtec_domain_e
ntity.jar;C:\workspace\lib\objtec_log.jar;C:\workspace
\lib\objtec_security.jar;C:\workspace\lib\objtec_se_engine.jar;C:\workspace\
lib\objtec_swing.jar;C:\workspace\lib\objtec_system.ja
r;C:\workspace\lib\objtec_textadmin.jar;C:\workspace\lib\objtec_textservice_
client.jar;C:\workspace\lib\objtec_textservice_server.
jar;C:\workspace\lib\objtec_util.jar;C:\workspace\lib\objtec_validation.jar
Exception reading component C:\workspace\lib\objtec_util.jar original
message was:java.lang.LinkageError: duplicate class definiti
on: com/objtec/util/query/Query
   [genejb] AbstarctEJBGen init class not found com.objtec.util.query.Query
   [genejb] java.lang.ClassNotFoundException: com.objtec.util.query.Query
   [genejb]     at
org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.jav
a:1076)
   [genejb]     at
org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1037)
   [genejb]     at
com.objtec.devtools.genejb.AbstractEJBGenerator.init(AbstractEJBGenerator.ja
va:101)
   [genejb]     at
com.objtec.devtools.genejb.AbstractEJBGenerator.<init>(AbstractEJBGenerator.
java:84)
   [genejb]     at
com.objtec.devtools.genejb.EntityBeanGenerator.<init>(EntityBeanGenerator.ja
va:109)
   [genejb]     at
com.objtec.devtools.genejb.ComponentGenerator.addEntityClasses(ComponentGene
rator.java:216)
   [genejb]     at
com.objtec.devtools.genejb.ComponentGenerator.<init>(ComponentGenerator.java
:165)
   [genejb]     at
com.objtec.devtools.genejb.GenEjbAntTask.execute(GenEjbAntTask.java:89)
   [genejb]     at org.apache.tools.ant.Task.perform(Task.java:319)
   [genejb]     at org.apache.tools.ant.Target.execute(Target.java:309)
   [genejb]     at org.apache.tools.ant.Target.performTasks(Target.java:336)
   [genejb]     at
org.apache.tools.ant.Project.executeTarget(Project.java:1306)
   [genejb]     at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:371)
   [genejb]     at org.apache.tools.ant.Task.perform(Task.java:319)
   [genejb]     at org.apache.tools.ant.Target.execute(Target.java:309)
   [genejb]     at org.apache.tools.ant.Target.performTasks(Target.java:336)
   [genejb]     at
org.apache.tools.ant.Project.executeTarget(Project.java:1306)
   [genejb]     at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:371)
   [genejb]     at
org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:143)
   [genejb]     at org.apache.tools.ant.Task.perform(Task.java:319)
   [genejb]     at org.apache.tools.ant.Target.execute(Target.java:309)
   [genejb]     at org.apache.tools.ant.Target.performTasks(Target.java:336)
   [genejb]     at
org.apache.tools.ant.Project.executeTarget(Project.java:1306)
   [genejb]     at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:371)
   [genejb]     at org.apache.tools.ant.Task.perform(Task.java:319)
   [genejb]     at org.apache.tools.ant.Target.execute(Target.java:309)
   [genejb]     at org.apache.tools.ant.Target.performTasks(Target.java:336)
   [genejb]     at
org.apache.tools.ant.Project.executeTarget(Project.java:1306)
   [genejb]     at
org.apache.tools.ant.Project.executeTargets(Project.java:1250)
   [genejb]     at org.apache.tools.ant.Main.runBuild(Main.java:610)
   [genejb]     at org.apache.tools.ant.Main.start(Main.java:196)
   [genejb]     at org.apache.tools.ant.Main.main(Main.java:235)


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>