首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Ant脚本中运行Gant任务时的NoClassDefFoundError

从Ant脚本中运行Gant任务时的NoClassDefFoundError
EN

Stack Overflow用户
提问于 2011-12-06 23:36:33
回答 1查看 333关注 0票数 1

我有一个Android构建脚本。它尝试使用Gant任务而不是Ant目标来完成项目上的自定义工作。有趣的构建脚本部分如下所示:

代码语言:javascript
复制
<taskdef name="gant" classname="org.codehaus.gant.ant.Gant">
    <classpath>
        <pathelement location="${gant.dir}/gant-1.9.7_groovy-1.8.4.jar" />
    </classpath>
</taskdef>

<target name="-pre-build">
    <gant target="targetA"/>
    <gant target="targetB"/>
    <gant target="targetC"/>
    <gant target="targetD"/>
    <gant target="targetE"/>
</target>

<target name="-pre-compile">
    <gant target="targetF"/>
</target>

我的build.gant文件肯定有这些目标,但是当使用Ant运行构建脚本时,我得到:

代码语言:javascript
复制
(...)\build.xml:55: java.lang.NoClassDefFoundError: groovy/util/AntBuilder

一旦Ant命中行:

代码语言:javascript
复制
    <gant target="targetA"/>

我使用Groovy 1.8.4,从Windows installer文件安装Gant,使用Eclipse Helios,使用Ant视图。Gant.dir属性具有有效路径,因此情况并非如此。看起来Groovy无法在build.gant文件中找到目标,即使它们存在。我甚至尝试使用Gant task提供的build.gant文件的完整路径,但没有成功。当从控制台运行Ant脚本时,也会发生同样的事情。Build.gant文件在Ant脚本中可见。

有没有办法解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-07 08:23:55

因此,这不是build.gant内部不可见目标的问题,而是任务定义的类路径中缺少库的问题。下面的方法解决了我的问题:

代码语言:javascript
复制
<path id="gant.libs">
    <fileset dir="${gant.libs.dir}" includes="**/*.jar"/>
</path>

<taskdef name="gant" classname="org.codehaus.gant.ant.Gant">
    <classpath refid="gant.libs"/>
</taskdef>

<target name="-pre-build">
    <gant target="targetA"/>
    <gant target="targetB"/>
    <gant target="targetC"/>
    <gant target="targetD"/>
    <gant target="targetE"/>
</target>

<target name="-pre-compile">
    <gant target="targetF"/>
</target>

其中gant.libs.dir是指包含Gant 1.9.7二进制独立安装压缩文件中的gant_groovy1.8-1.9.7.jar和groovy-all-1.8.4.jar的目录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8402516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档