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

问题描述 投票:8回答:5

我是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(build 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,链接编辑。:-)我完全忘了这样做!)

netbeans ant osx-mountain-lion build.xml
5个回答
6
投票

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


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>

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和用户特定目录。


0
投票

我想分享我的答案肯定会在尝试这么长时间之后起作用:它就是这样:复制你尝试过的文件(build-iml)并在其他地方工作并替换上面声明的那个。一个注意事项:如果你检查大小,你会发现很大的不同,例如腐败的文件(在我的项目中是72),而新的是90k ......只是尽快尝试,你绝对会感谢我。


-1
投票

你不能在[taskdef]中使用属性

sudo cp ant-contrib-1.0b3.jar /usr/local/lib/.

然后使用修改build.xml

<pathelement location="/usr/local/lib/ant-contrib-1.0b3.jar"/>
© www.soinside.com 2019 - 2024. All rights reserved.