You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by "Morris, Jason [IT]" <ja...@citigroup.com> on 2003/11/28 19:54:25 UTC

Checkstyle plug-in unable to resolve user-defined Check classes

(Apologies if this is an old thread - I'm quite new to Maven)

I have installed Maven and have it running fine. It generates a Checkstyle report based on the Sun coding standards with no problems. Now I want to add some of my own user-defined Checks. But whenever I do I get this exception:

Unable to create a Checker: cannot initialize module TreeWalker - Unable to instantiate chkstyle.MyTest
        at com.puppycrawl.tools.checkstyle.CheckStyleTask.execute(CheckStyleTask.java:273)
        at org.apache.tools.ant.Task.perform(Task.java:341)
        at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:232)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
        at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
        at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
        at com.werken.werkz.Goal.fire(Goal.java:639)
        at com.werken.werkz.Goal.attain(Goal.java:575)
        at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
        at com.werken.werkz.Goal.attain(Goal.java:573)
        at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
        at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
        at org.apache.maven.cli.App.doMain(App.java:525)
        at org.apache.maven.cli.App.main(App.java:1088)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.werken.forehead.Forehead.run(Forehead.java:543)
        at com.werken.forehead.Forehead.main(Forehead.java:573)

So it looks like it is unable to resolve the class from my jar file. I have tried everything to get it to work, including:

- Adding the jar as a dependency using the maven.jar.mycheck property and referencing it in the POM
- Adding an explicit <classpath> element to the checkstyle task and even the <ant:checkstyle> element in the Checkstyle plugin.jelly
- Adding it to the "-classpath" in the bin/maven start script

The latter seems to be the only thing that works, but only gets me as far as this:

java.lang.NoClassDefFoundError: com/puppycrawl/tools/checkstyle/api/Check
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:488)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:106)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:243)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:51)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:190)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:183)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:294)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:281)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:287)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:287)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:310)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:190)
        at com.puppycrawl.tools.checkstyle.PackageObjectFactory.createObject(PackageObjectFactory.java:114)
        at com.puppycrawl.tools.checkstyle.PackageObjectFactory.doMakeObject(PackageObjectFactory.java:83)
        at com.puppycrawl.tools.checkstyle.PackageObjectFactory.createModule(PackageObjectFactory.java:149)
        at com.puppycrawl.tools.checkstyle.TreeWalker.setupChild(TreeWalker.java:184)
        at com.puppycrawl.tools.checkstyle.api.AutomaticBean.configure(AutomaticBean.java:203)
        at com.puppycrawl.tools.checkstyle.Checker.setupChild(Checker.java:183)
        at com.puppycrawl.tools.checkstyle.api.AutomaticBean.configure(AutomaticBean.java:203)
        at com.puppycrawl.tools.checkstyle.CheckStyleTask.execute(CheckStyleTask.java:264)
        at org.apache.tools.ant.Task.perform(Task.java:341)
        at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:232)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
        at org.apache.commons.jelly.tags.core.IfTag.doTag(IfTag.java:88)
        at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:279)
        at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:135)
        at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:233)
        at com.werken.werkz.jelly.GoalTag$1.performAction(GoalTag.java:128)
        at com.werken.werkz.Goal.fire(Goal.java:639)
        at com.werken.werkz.Goal.attain(Goal.java:575)
        at com.werken.werkz.Goal.attainPrecursors(Goal.java:488)
        at com.werken.werkz.Goal.attain(Goal.java:573)
        at org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:434)
        at org.apache.maven.MavenSession.attainGoals(MavenSession.java:348)
        at org.apache.maven.cli.App.doMain(App.java:525)
        at org.apache.maven.cli.App.main(App.java:1088)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.werken.forehead.Forehead.run(Forehead.java:543)
        at com.werken.forehead.Forehead.main(Forehead.java:573)

So now it seems to find my "chkstyle.MyTest" class but not the "Check" superclass. Which it must surely be resolving when I run just the standard Sun checks. I ran "jar tvf" on the checkstyle jar in my repository and it shows that com/puppycrawl/tools/checkstyle/api/Check.class exists, but Maven is refusing to resolve it. 

One thing did just strike me though - it seems to be using java.net.URLClassLoader. I am running in offline mode from behind a firewall ("maven -e -o checkstyle"). Does that sound right?

The Check runs fine in standalone Checkstyle, just not through Maven.

If anyone has any advice it would be sincerely appreciated because this looks like it should be simple but it is driving me absolutely nuts!

	Jason.
			

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