You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Kristopher Brown <Kr...@diagonal-solutions.co.uk> on 2004/02/16 18:58:22 UTC

Classpath issues with old version of jing?

Hi,

I'm having some problems using jing and trang with an old project which
has a dependancy on the 20020724 versions of them, along with the
20020414 version of msv (and associated jars).  I'm not in a position to
update to the latest version.  Not all of the versions used are
available on ibiblio, and for the sake of ensuring that the correct
version are being picked up, I've added them under a group id of "kris".
The jar files work from the command prompt with a set classpath.  This
is my first attempt at writing a plugin, so I could be setting the
classpath incorrectly or something.

The relevant entries in the project.xml file are:

    <dependency>
      <groupId>kris</groupId>
      <artifactId>msv</artifactId>
      <version>20020414</version>
    </dependency>

    <dependency>
      <groupId>kris</groupId>
      <artifactId>isorelax</artifactId>
      <version>20020707</version>
    </dependency>

    <dependency>
      <groupId>kris</groupId>
      <artifactId>xsdlib</artifactId>
      <version>20020414</version>
    </dependency>

    <dependency>
      <groupId>kris</groupId>
      <artifactId>jing</artifactId>
      <version>20020724</version>
    </dependency>

    <dependency>
      <groupId>kris</groupId>
      <artifactId>trang</artifactId>
      <version>20020724</version>
    </dependency>

and in the plugin.jelly file, in a goal there is the following ant
taskdef:

    <ant:taskdef name="schemacheck"
classname="blah.blah.SchemaCheckTask">
      <ant:classpath>
        <ant:pathelement
location="${plugin.getDependencyPath('log4j:log4j')}"/>
        <ant:pathelement
location="${plugin.getDependencyPath('xerces:xerces')}"/>
        <ant:pathelement
location="${plugin.getDependencyPath('kris:msv')}"/>
        <ant:pathelement
location="${plugin.getDependencyPath('kris:isorelax')}"/>
        <ant:pathelement
location="${plugin.getDependencyPath('kris:xsdlib')}"/>
        <ant:pathelement
location="${plugin.getDependencyPath('kris:jing')}"/>
        <ant:pathelement
location="${plugin.getDependencyPath('kris:trang')}"/>
      </ant:classpath>
    </ant:taskdef>

when I run the goal, I get the following AbstractMethodError

java.lang.AbstractMethodError:
com.thaiopensource.relaxng.edit.SchemaBuilderImpl$ElementAnnotationBuild
erImpl.addText(Ljava/lang/String;Lcom/thaiopensource/relaxng/parse/Locat
ion;Lcom/thaiopensource/relaxng/parse/CommentList;)V
        at
com.thaiopensource.relaxng.parse.compact.CompactSyntax.Documentation(Unk
nown Source)
        at
com.thaiopensource.relaxng.parse.compact.CompactSyntax.Annotations(Unkno
wn Source)
        at
com.thaiopensource.relaxng.parse.compact.CompactSyntax.GrammarComponent(
Unknown Source)
        at
com.thaiopensource.relaxng.parse.compact.CompactSyntax.GrammarBody(Unkno
wn Source)
        at
com.thaiopensource.relaxng.parse.compact.CompactSyntax.IncludedGrammar(U
nknown Source)
        at
com.thaiopensource.relaxng.parse.compact.CompactSyntax.parseInclude(Unkn
own Source)
        at
com.thaiopensource.relaxng.parse.compact.CompactParseable.parseInclude(U
nknown Source)
        [SNIP]

The interesting part is that the Documentation class does not exist in
jing-20020414, but it does in jing-20030619, referenced only by the pom
plugin (as far as I can tell).  The method it is attempting to call does
not exist in trang-20020414, but it does in trang-20030619.  Therefore,
I can deduce that the version being used are jing-20030619 and
trang-20020414.

It seems to me that even though I have supplied the correct version of
jing on the classpath, the version of jing depended on by the pom plugin
is interfering, and the correct version of trang is on the classpath.

I noticed that there is a classpath element in the dependancy of
jing-20030619 in the pom plugin:
      <properties>
        <classloader>root</classloader>
      </properties>

Perhaps this is forcing the classloader to use it over anything I
define?  I noticed that in the classloader resolution, the
SchemaBuilderImpl is loaded from the ant loader, whereas the jing
classes are loaded from the parent loader. [...relaxng.edit is in trang,
...relaxng.parse is in jing]

    [SNIP]
    [schemacheck] [DEBUG] Class
com.thaiopensource.relaxng.output.rng.RngOutputFormat loaded from ant
loader
    [schemacheck] [DEBUG] Finding class
com.thaiopensource.relaxng.edit.PatternVisitor
    [schemacheck] [DEBUG] Class
com.thaiopensource.relaxng.edit.PatternVisitor loaded from ant loader
    [schemacheck] [DEBUG] Class
org.relaxng.datatype.helpers.DatatypeLibraryLoader loaded from parent
loader
    [schemacheck] [DEBUG] Finding class
com.thaiopensource.relaxng.edit.SchemaBuilderImpl
    [schemacheck] [DEBUG] Class
com.thaiopensource.relaxng.parse.SchemaBuilder loaded from parent loader
    [schemacheck] [DEBUG] Class
com.thaiopensource.relaxng.edit.SchemaBuilderImpl loaded from ant loader
    [schemacheck] [DEBUG] Class org.xml.sax.Locator loaded from parent
loader
    [schemacheck] [DEBUG] Class
com.thaiopensource.relaxng.parse.ElementAnnotationBuilder loaded from
parent loader
    [schemacheck] [DEBUG] Class
com.thaiopensource.relaxng.parse.Annotations loaded from parent loader
    [schemacheck] [DEBUG] Class
com.thaiopensource.relaxng.parse.DataPatternBuilder loaded from parent
loader
    [schemacheck] [DEBUG] Class
com.thaiopensource.relaxng.parse.CommentList loaded from parent loader
    [schemacheck] [DEBUG] Class
com.thaiopensource.relaxng.parse.Location loaded from parent loader
    [SNIP]

I can also see that other classes, such as those from the msv, are being
loaded by the ant loader.

Can anyone help me?

Thanks in advance,
Kris.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: List goals

Posted by Tomasz Pik <pi...@ais.pl>.
Freddy wrote:

> Is there a goal that list all the the basic goals in maven (and the goals of
> pluggins that are installed)?

Try 'maven --goals'

Regards,
Tomek

> Freddy


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


List goals

Posted by Freddy <ki...@teccomm.les.inf.puc-rio.br>.
Is there a goal that list all the the basic goals in maven (and the goals of
pluggins that are installed)?
[]s
Freddy
----------------------------------------------------------------
Frederico Silva GuimarĂ£es
Tel: (21) 9952-1717
ICQ: 127277403
Email: kid@teccomm.les.inf.puc-rio.br
----------------------------------------------------------------


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org