[groovy-user] Error when using ConfigSlurper in Groovy Ant Task

15 views
Skip to first unread message

fenrir

unread,
Dec 26, 2008, 7:32:43 PM12/26/08
to us...@groovy.codehaus.org

Hi, I need some help.
When I tried to execute the following task:

<target name="test">
<path id="groovy.classpath">
<pathelement location="lib/groovy-all.jar"/>
</path>

<taskdef name="groovy"
classname="org.codehaus.groovy.ant.Groovy"
classpathref="groovy.classpath"/>

<groovy>
URL url = new File("script/test.groovy").toURL();

println url;
new ConfigSlurper().parse(url);
</groovy>
</target>

I encountered these error messages:
=====================================
C:\development\test>ant test
Buildfile: build.xml

hello:
[groovy] file:/C:/development/test/script/test.groovy

BUILD FAILED
java.lang.NoClassDefFoundError: groovy/lang/Script
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
at
groovy.lang.GroovyClassLoader.access$200(GroovyClassLoader.java:57)
at
groovy.lang.GroovyClassLoader$ClassCollector.createClass(GroovyClassL
oader.java:449)
at
groovy.lang.GroovyClassLoader$ClassCollector.onClassNode(GroovyClassL
oader.java:466)
at
groovy.lang.GroovyClassLoader$ClassCollector.call(GroovyClassLoader.j
ava:470)
at
org.codehaus.groovy.control.CompilationUnit$10.call(CompilationUnit.j
ava:699)
at
org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(
CompilationUnit.java:883)
at
org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.j
ava:433)
at
groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:281)
at
groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:252)
at
groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:247)
at
groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:209)
at
groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:219)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMet
hodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229)
at
org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMeta
MethodSite.java:52)
at
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSi
teArray.java:43)
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCa
llSite.java:116)
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCa
llSite.java:124)
at groovy.util.ConfigSlurper.parse(ConfigSlurper.groovy:152)
at groovy.util.ConfigSlurper$parse.call(Unknown Source)
at
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSi
teArray.java:43)
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCa
llSite.java:116)
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCa
llSite.java:124)
at
embedded_script_in_C__development_test_build.run(embedded_script_i
n_C__development_test_build.xml:4)
at org.codehaus.groovy.ant.Groovy.parseAndRunScript(Groovy.java:424)
at org.codehaus.groovy.ant.Groovy.execGroovy(Groovy.java:404)
at org.codehaus.groovy.ant.Groovy.execute(Groovy.java:279)
at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExe
cutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
at org.apache.tools.ant.Main.runBuild(Main.java:758)
at org.apache.tools.ant.Main.startAnt(Main.java:217)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
Caused by: java.lang.ClassNotFoundException: groovy.lang.Script
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at
groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:637)
at
groovy.lang.GroovyClassLoader$InnerLoader.loadClass(GroovyClassLoader
.java:379)
at
groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:720)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
... 50 more

Total time: 4 seconds
========================

Did I miss any dependency?
--
View this message in context: http://www.nabble.com/Error-when-using-ConfigSlurper-in-Groovy-Ant-Task-tp21180542p21180542.html
Sent from the groovy - user mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

http://xircles.codehaus.org/manage_email


Roshan Dawrani

unread,
Dec 26, 2008, 11:19:09 PM12/26/08
to us...@groovy.codehaus.org
ConfigSlurper uses a new GroovyClassLoader by default and that is not able to see the classpath you are setting in your ant script.

You can override that as below so that it uses the GroovyClassLoader that is used in context of your ant script:
==================================================
<project name="test">
   <property environment="env"/>

    <target name="test">
       <path id="groovy.classpath">
           <fileset dir="${env.GROOVY_HOME}/embeddable/"/>

       </path>

       <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="groovy.classpath"/>

       <groovy>
           URL url = new File("script/test.groovy").toURL();
           def configSlurper = new ConfigSlurper()
           configSlurper.classLoader = this.class.getClassLoader()
           println configSlurper.parse(url);
       </groovy>
    </target>
</project>
==================================================

Hope it helps.
Roshan

fenrir

unread,
Dec 26, 2008, 11:27:16 PM12/26/08
to us...@groovy.codehaus.org

Hi Roshan,

It works!! I never knew about this classloader stuffs. I will pay attention
to it.

Thank you very much for your help!!! :)

Best Regards

Donny

--
View this message in context: http://www.nabble.com/Error-when-using-ConfigSlurper-in-Groovy-Ant-Task-tp21180542p21181568.html

Reply all
Reply to author
Forward
0 new messages