无法从资源net / sf / antcontrib / antlib.xml,netbeans加载定义

时间:2012-09-25 22:14:20

标签: netbeans ant osx-mountain-lion build.xml

我是Netbeans的新手,也是Ruby编程的新手(不到一年)。我越来越对Eclipse和Ruby感到沮丧 - 它根本不像Mac那样! - 并根据“使用JRuby”中的建议决定尝试使用Netbeans。

关于一系列博客文章,特别是Geertjan的post,我已经完成了所有配置(我认为),但我一直收到此错误:

Could not load definitions from resource net/sf/antcontrib/antlib.xml. It could not be found.

build.xml的相关部分(我认为)是:

<taskdef resource="net/sf/antcontrib/antlib.xml">
    <classpath>
        <pathelement location="${binaries.cache}/943CD5C8802B2A3A64A010EFB86EC19BAC142E40-ant-contrib-1.0b3.jar"/>
    </classpath>
</taskdef>

binaries.cache指向/Users/carolyn/.hgexternalcache; jar文件,我在任何地方都找不到。我在Geertjan的博客上问过,我想我也会在这里问。我尝试过各种不同的东西 - 我花了一段时间才发现Netbeans使用自己的Java和Ant! - 并且没有定义$ ANT_HOME,但我尝试的任何东西似乎都没有用。我知道我错过了一些简单的东西,但无法弄清楚它可能是什么!

我正在使用Netbeans 7.2(版本201207171143)运行OS X Mountain Lion。我将NB Ruby下载到“〜/ Downloads / mercurial / NB Ruby”。

提前感谢您的帮助! : - )

谢谢@TarjusArjun!

找到ant-contrib-1.0b3.jar(I found it here)后,需要将其复制到:

/Applications/NetBeans/NetBeans 7.2.app/Contents/Resources/NetBeans/java/ant/lib

如果您的安装与我的一样,那么您会收到一堆新错误和失败的构建 - 但这是一个不同的问题。

(谢谢,Jav_Rock,链接编辑。:-)我完全忘了这样做!)

5 个答案:

答案 0 :(得分:6)

也许你的根本问题在于NetBeans IDE没有选择ANT_HOME。 ANT捆绑在NETBEANS IDE中的这个位置:<<NETBEANSHOME>>/java/ant。您可以尝试将ant-contrib-1.0b3.jar放在此位置。

答案 1 :(得分:1)

用ubuntu为我工作。 将文件ant-contrib-1.0b3.jar复制并重命名为指定的路径

<target name="downloadbinaries" description="Download external binaries not stored in Mercurial sources." depends="-taskdefs">
    <property file="${user.home}/.nbbuild.properties"/> <!-- permit binaries.cache to be overridden -->
    <property name="binaries.cache" location="${user.home}/.hgexternalcache"/>
    <property name="binaries.server" value="http://hg.netbeans.org/binaries/"/>
    <downloadbinaries cache="${binaries.cache}" server="${binaries.server}">
        <manifest dir=".">
            <include name="*/external/binaries-list"/>
        </manifest>
    </downloadbinaries>

    <taskdef resource="net/sf/antcontrib/antlib.xml">
        <classpath>
            <pathelement location="${binaries.cache}/**943CD5C8802B2A3A64A010EFB86EC19BAC142E40-ant-contrib-1.0b3.jar**"/>
        </classpath>
    </taskdef>
</target>

答案 2 :(得分:0)

Netbeans文档建议将antlib放在相对于项目的路径中:

<project name="test" default="all" basedir=".">
    <target name="init">
        <javac srcdir="tasksource" destdir="build/taskclasses"/>
        <jar jarfile="mytasks.jar">
            <fileset dir="build/taskclasses"/>
        </jar>
        <taskdef name="customtask" classname="com.mycom.MyCustomTask">
            <classpath>
                 <pathelement location="mytasks.jar"/>
            </classpath>
        </taskdef>
    </target> 
</project>

在上面的示例中,antlib放在mytask.jar中,并作为taskdef类路径的一部分引用。此方法独立于ANT_HOME和用户特定目录。

答案 3 :(得分:0)

我想分享我的答案,在尝试了这么长时间之后,它肯定可以工作: 就是这样: 将您尝试过的文件(build-iml)复制到其他地方,并替换上面声明的文件。一个注意事项:如果您检查大小,会发现差异很大,例如损坏的文件(在我的项目中为72),而新文件为90k……请尽快尝试,绝对会感谢我。

答案 4 :(得分:-1)

您无法在[taskdef]

中使用属性
sudo cp ant-contrib-1.0b3.jar /usr/local/lib/.

然后使用

修改build.xml
<pathelement location="/usr/local/lib/ant-contrib-1.0b3.jar"/>