(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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]