componentdef误差蚂蚁 [英] componentdef error with ant

查看:203
本文介绍了componentdef误差蚂蚁的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个使用Ant来构建应用程序中的相对较老的Grails应用程序。在测试服务器建立它没有任何问题,但是当我试图在我的电脑上运行它,我得到一个一致的错误:

 产生的原因中:jar:文件:/ C:/ant/apache-ant-1.8.0/lib/ant.jar /组织/阿帕奇/工具/ ANT /的antlib! XML:37:问题:无法创建任务或键入componentdef
    原因:这个名字是不确定的。
    操作:检查拼写。
    操作:检查所有的自定义任务/类型已经被宣布。
    操作:检查任何与LT; presetdef> /< macrodef>声明发生。
    在org.apache.tools.ant.UnknownElement.getNotFoundException(UnknownElement.java:484)
        在org.apache.tools.ant.UnknownElement.makeObject(UnknownElement.java:416)
        在org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:160)
        在org.apache.tools.ant.taskdefs.Antlib.execute(Antlib.java:146)
        在org.apache.tools.ant.taskdefs.Definer.loadAntlib(Definer.java:432)
        ... 63更多

我发现,在构建下面的部分发生错误:

 < macrodef NAME =Grails的>
    <属性名=脚本/>
    <属性名=ARGS默认=​​/>
    <&连续GT;
        < grailsTask脚本=@ {}脚本ARGS =@ {} ARGSclasspathref =grails.classpath>
            < compileClasspath REFID =compile.classpath/>
            < testClasspath REFID =test.classpath/>
            < runtimeClasspath REFID =app.classpath/>
        < / grailsTask>
    < /顺序>
< / macrodef>

如果我注释掉,有没有更多的错误。

有关进一步refererence,这里是整个错误转储:

  G:\\ ChP与我们的\\ src \\ hewittportlet \\的build.xml:131:执行此线出现以下错误:
G:\\ ChP与我们的\\ src \\ hewittportlet \\的build.xml:53:无法启动的Grails:java.lang.reflect.InvocationTargetExc
器件接收
        在grails.ant.GrailsTask.runGrails(GrailsTask.java:124)
        在grails.ant.GrailsTask.execute(GrailsTask.java:78)
        在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        在sun.reflect.GeneratedMethodAccessor4.invoke(来源不明)
        在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        在java.lang.reflect.Method.invoke(Method.java:597)
        在org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        在org.apache.tools.ant.Task.perform(Task.java:348)
        在org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
        在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        在sun.reflect.GeneratedMethodAccessor4.invoke(来源不明)
        在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        在java.lang.reflect.Method.invoke(Method.java:597)
        在org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        在org.apache.tools.ant.Task.perform(Task.java:348)
        在org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398)
        在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        在sun.reflect.GeneratedMethodAccessor4.invoke(来源不明)
        在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        在java.lang.reflect.Method.invoke(Method.java:597)
        在org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        在org.apache.tools.ant.Task.perform(Task.java:348)
        在org.apache.tools.ant.Target.execute(Target.java:390)
        在org.apache.tools.ant.Target.performTasks(Target.java:411)
        在org.apache.tools.ant.Project.executeSortedTargets(Project.java:1360)
        在org.apache.tools.ant.Project.executeTarget(Project.java:1329)
        在org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        在org.apache.tools.ant.Project.executeTargets(Project.java:1212)
        在org.apache.tools.ant.Main.runBuild(Main.java:801)
        在org.apache.tools.ant.Main.startAnt(Main.java:218)
        在org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
        在org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
了java.lang.RuntimeException:引起java.lang.reflect.InvocationTargetException
        在组织。codehaus.groovy.grails.cli.support.GrailsBuildHelper.execute(GrailsBuildHelper.java:9
4)
        在grails.ant.GrailsTask.runGrails(GrailsTask.java:113)
        ... 31更多
java.lang.reflect.InvocationTargetException:产生的原因
        在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
        在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        在java.lang.reflect.Method.invoke(Method.java:597)
        在组织。codehaus.groovy.grails.cli.support.GrailsBuildHelper.execute(GrailsBuildHelper.java:8
8)
        ... 32更多
产生的原因:在执行这条线出现以下错误:
瓶子:文件:/ C:/ant/apache-ant-1.8.0/lib/ant.jar /org/apache/tool​​s/ant/antlib.xml:37:问题:失败Ť
o创建任务或键入componentdef
原因:这个名字是不确定的。
操作:检查拼写。
操作:检查所有的自定义任务/类型已经被宣布。
操作:检查任何与LT; presetdef> /< macrodef>声明发生。        在org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:508)
        在org.apache.tools.ant.taskdefs.Definer.loadAntlib(Definer.java:434)
        在org.apache.tools.ant.taskdefs.Definer.execute(Definer.java:281)
        在org.apache.tools.ant.ComponentHelper.checkNamespace(ComponentHelper.java:790)
        在org.apache.tools.ant.ComponentHelper.getDefinition(ComponentHelper.java:260)
        在org.apache.tools.ant.ComponentHelper.createComponent(ComponentHelper.java:237)
        在org.apache.tools.ant.ComponentHelper.createComponent(ComponentHelper.java:216)
        在org.apache.tools.ant.UnknownElement.makeObject(UnknownElement.java:414)
        在org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:160)
        在groovy.util.AntBuilder.nodeCompleted(AntBuilder.java:186)
        在groovy.util.BuilderSupport.doInvokeMethod(BuilderSupport.java:147)
        在groovy.util.AntBuilder.doInvokeMethod(AntBuilder.java:154)
        在groovy.util.BuilderSupport.invokeMethod(BuilderSupport.java:64)
        在组织。codehaus.gant.GantBuilder.invokeMethod(GantBuilder.java:89)
        在组织。codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:45)
        在组织。codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
        在组织。codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
        在组织。codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
        。在组织codehaus.gant.GantBinding.initializeGantBinding(GantBinding.groovy:109)
        在组织。codehaus.gant.GantBinding.this $ 4 $ initializeGantBinding(GantBinding.groovy)
        在组织。codehaus.gant.GantBinding $这$ 4 $ initializeGantBinding.callCurrent(来源不明)
        在组织codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:
44)
        在组织。codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:1
43)
        在组织。codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:1
47)
        在组织codehaus.gant.GantBinding<&初始化GT;(GantBinding.groovy:42)。
        在组织。codehaus.groovy.grails.cli.GrailsS​​criptRunner.callPluginOrGrailsS​​cript(GrailsS​​criptRu
nner.java:355)
        在组织codehaus.groovy.grails.cli.GrailsS​​criptRunner.executeCommand(GrailsS​​criptRunner.java:
279)
        在组织codehaus.groovy.grails.cli.GrailsS​​criptRunner.executeCommand(GrailsS​​criptRunner.java:
205)
        ... 37更多
瓶子:文件:引起/ C:/ant/apache-ant-1.8.0/lib/ant.jar /org/apache/tool​​s/ant/antlib.xml:37:Proble
L:无法创建任务或键入componentdef
原因:这个名字是不确定的。
操作:检查拼写。
操作:检查所有的自定义任务/类型已经被宣布。
操作:检查任何与LT; presetdef> /< macrodef>声明发生。        在org.apache.tools.ant.UnknownElement.getNotFoundException(UnknownElement.java:484)
        在org.apache.tools.ant.UnknownElement.makeObject(UnknownElement.java:416)
        在org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:160)
        在org.apache.tools.ant.taskdefs.Antlib.execute(Antlib.java:146)
        在org.apache.tools.ant.taskdefs.Definer.loadAntlib(Definer.java:432)
        ... 63更多总时间:34秒


解决方案

我找到了问题的根源。

问题是不是Ant版本,而是Grails和失踪脚本的版本。这个应用程序是使用德precated的Grails(版本1.1.1)的版本。

以下code,其中我重新列出了每个人的便利,在调用的脚本。然而,在这个特殊的应用中,脚本被除去,这造成Grails的构建过程坠毁:

 < macrodef NAME =Grails的>
<属性名=脚本/>
<属性名=ARGS默认=​​/>
<&连续GT;
    < grailsTask脚本=@ {}脚本ARGS =@ {} ARGSclasspathref =grails.classpath>
        < compileClasspath REFID =compile.classpath/>
        < testClasspath REFID =test.classpath/>
        < runtimeClasspath REFID =app.classpath/>
    < / grailsTask>
< /顺序>
< / macrodef>

解决的办法很简单:Grails的升级到最新版本,如1.3.5。构建工作没有之后的问题,即使有些脚本失踪。

我推测,这种新的行为使得脚手架过程中生成的脚本,但同时给予自由开发人员删除不需要的或不必要的脚本。

感谢Burth贝克卫斯对他的见解。

路易斯科罗拉多

I have an relatively old Grails app that uses ant to build the application. In the test server it build without any problems, but when I try to run it on my PC, I get a consistent error:

Caused by: jar:file:/C:/ant/apache-ant-1.8.0/lib/ant.jar!/org/apache/tools/ant/antlib.xml:37: Problem: failed to create task or type componentdef
    Cause: The name is undefined.
    Action: Check the spelling.
    Action: Check that any custom tasks/types have been declared.
    Action: Check that any <presetdef>/<macrodef> declarations have taken place.
    at org.apache.tools.ant.UnknownElement.getNotFoundException(UnknownElement.java:484)
        at org.apache.tools.ant.UnknownElement.makeObject(UnknownElement.java:416)
        at org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:160)
        at org.apache.tools.ant.taskdefs.Antlib.execute(Antlib.java:146)
        at org.apache.tools.ant.taskdefs.Definer.loadAntlib(Definer.java:432)
        ... 63 more

I have found that the error happens in the following part of the build:

<macrodef name="grails">
    <attribute name="script"/>
    <attribute name="args" default="" />
    <sequential>
        <grailsTask script="@{script}" args="@{args}" classpathref="grails.classpath">
            <compileClasspath refid="compile.classpath"/>
            <testClasspath refid="test.classpath"/>
            <runtimeClasspath refid="app.classpath"/>
        </grailsTask>
    </sequential>
</macrodef>

If I comment out , there are no more errors.

For further refererence, here's the whole error dump:

G:\chp\src\hewittportlet\build.xml:131: The following error occurred while executing this line:
G:\chp\src\hewittportlet\build.xml:53: Unable to start Grails: java.lang.reflect.InvocationTargetExc
eption
        at grails.ant.GrailsTask.runGrails(GrailsTask.java:124)
        at grails.ant.GrailsTask.execute(GrailsTask.java:78)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:390)
        at org.apache.tools.ant.Target.performTasks(Target.java:411)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1360)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1329)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1212)
        at org.apache.tools.ant.Main.runBuild(Main.java:801)
        at org.apache.tools.ant.Main.startAnt(Main.java:218)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at org.codehaus.groovy.grails.cli.support.GrailsBuildHelper.execute(GrailsBuildHelper.java:9
4)
        at grails.ant.GrailsTask.runGrails(GrailsTask.java:113)
        ... 31 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.groovy.grails.cli.support.GrailsBuildHelper.execute(GrailsBuildHelper.java:8
8)
        ... 32 more
Caused by: The following error occurred while executing this line:
jar:file:/C:/ant/apache-ant-1.8.0/lib/ant.jar!/org/apache/tools/ant/antlib.xml:37: Problem: failed t
o create task or type componentdef
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.

        at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:508)
        at org.apache.tools.ant.taskdefs.Definer.loadAntlib(Definer.java:434)
        at org.apache.tools.ant.taskdefs.Definer.execute(Definer.java:281)
        at org.apache.tools.ant.ComponentHelper.checkNamespace(ComponentHelper.java:790)
        at org.apache.tools.ant.ComponentHelper.getDefinition(ComponentHelper.java:260)
        at org.apache.tools.ant.ComponentHelper.createComponent(ComponentHelper.java:237)
        at org.apache.tools.ant.ComponentHelper.createComponent(ComponentHelper.java:216)
        at org.apache.tools.ant.UnknownElement.makeObject(UnknownElement.java:414)
        at org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:160)
        at groovy.util.AntBuilder.nodeCompleted(AntBuilder.java:186)
        at groovy.util.BuilderSupport.doInvokeMethod(BuilderSupport.java:147)
        at groovy.util.AntBuilder.doInvokeMethod(AntBuilder.java:154)
        at groovy.util.BuilderSupport.invokeMethod(BuilderSupport.java:64)
        at org.codehaus.gant.GantBuilder.invokeMethod(GantBuilder.java:89)
        at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:45)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
        at org.codehaus.gant.GantBinding.initializeGantBinding(GantBinding.groovy:109)
        at org.codehaus.gant.GantBinding.this$4$initializeGantBinding(GantBinding.groovy)
        at org.codehaus.gant.GantBinding$this$4$initializeGantBinding.callCurrent(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:
44)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:1
43)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:1
47)
        at org.codehaus.gant.GantBinding.<init>(GantBinding.groovy:42)
        at org.codehaus.groovy.grails.cli.GrailsScriptRunner.callPluginOrGrailsScript(GrailsScriptRu
nner.java:355)
        at org.codehaus.groovy.grails.cli.GrailsScriptRunner.executeCommand(GrailsScriptRunner.java:
279)
        at org.codehaus.groovy.grails.cli.GrailsScriptRunner.executeCommand(GrailsScriptRunner.java:
205)
        ... 37 more
Caused by: jar:file:/C:/ant/apache-ant-1.8.0/lib/ant.jar!/org/apache/tools/ant/antlib.xml:37: Proble
m: failed to create task or type componentdef
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.

        at org.apache.tools.ant.UnknownElement.getNotFoundException(UnknownElement.java:484)
        at org.apache.tools.ant.UnknownElement.makeObject(UnknownElement.java:416)
        at org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:160)
        at org.apache.tools.ant.taskdefs.Antlib.execute(Antlib.java:146)
        at org.apache.tools.ant.taskdefs.Definer.loadAntlib(Definer.java:432)
        ... 63 more

Total time: 34 seconds

解决方案

I found the source of the problem.

The problem was not the version of Ant, but rather the version of Grails and missing scripts. This application was using a deprecated version of Grails (version 1.1.1).

The following code, which I'm re-listing for everybody's conveniences, is invoking a script. However, in this particular application, the script had been removed, which caused Grails' build process to crash:

<macrodef name="grails">
<attribute name="script"/>
<attribute name="args" default="" />
<sequential>
    <grailsTask script="@{script}" args="@{args}" classpathref="grails.classpath">
        <compileClasspath refid="compile.classpath"/>
        <testClasspath refid="test.classpath"/>
        <runtimeClasspath refid="app.classpath"/>
    </grailsTask>
</sequential>
</macrodef>

The solution was simple: to upgrade Grails to a more recent version, such as 1.3.5. The build worked without problems after that, even though some scripts were missing.

I would speculate that this new behavior allowed to generate scripts during the scaffolding, but at the same time give the freedom to the developer to remove unwanted or unnecessary scripts.

Thanks to Burth Beckwith for his insights.

Luis Colorado

这篇关于componentdef误差蚂蚁的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆