我是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 IDE没有选择ANT_HOME。 ANT捆绑在NETBEANS IDE中的这个位置:<<NETBEANSHOME>>/java/ant
。您可以尝试将ant-contrib-1.0b3.jar
放在这个位置。
它和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>
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
和用户特定目录。
我想分享我的答案肯定会在尝试这么长时间之后起作用:它就是这样:复制你尝试过的文件(build-iml)并在其他地方工作并替换上面声明的那个。一个注意事项:如果你检查大小,你会发现很大的不同,例如腐败的文件(在我的项目中是72),而新的是90k ......只是尽快尝试,你绝对会感谢我。
你不能在[taskdef]中使用属性
sudo cp ant-contrib-1.0b3.jar /usr/local/lib/.
然后使用修改build.xml
<pathelement location="/usr/local/lib/ant-contrib-1.0b3.jar"/>