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