为什么NetBeans不能为我的某些项目找到CopyLibs?

时间:2013-06-06 22:36:50

标签: netbeans ant build

今天早上我遇到了一个讨厌的问题,花了我几个小时试图追查它。我已经使用两个NetBeans项目AB继承了一些代码。 他们都建立并成功运行;没有复杂的Ant构建任务;只是默认的IDE设置。

这两个项目共享大量代码,因此我将其分解为一个新的第三个项目Common。解析引用等后,NetBeans报告没有错误。一切似乎都很好。我毫不费力地构建了Common项目。事情变得奇怪。

突然,当我尝试构建项目AB时,他们编译就好了 - 但是在 build 的末尾,每一个都打破了同样的错误:

Copying 1 file to C:\Projects\projectName\build
C:\Projects\projectName\nbproject\build-impl.xml:723: The following error occurred while executing this line:
C:\Projects\projectName\nbproject\build-impl.xml:543: taskdef class org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs cannot be found
 using the classloader AntClassLoader[]
BUILD FAILED (total time: 3 seconds)

所有.class个文件都显示在build/classes中,而其他所有文件似乎都顺利进行,但没有任何文件进入dist文件夹。因此,我开始搜索CopyLibs问题。

人们建议确保在org-netbeans-modules-java-j2seproject-copylibstask.jar文件(它是)中正确引用了project.properties,并且在<userhome>/.netbeans/version/build.properties文件中也是如此(它是)。库 存在于它所引用的所有位置;事实上,NetBeans似乎默认将此jar的副本放入所有Java项目的./lib文件夹中。我尝试制作全新的项目并手动提供资源,但无济于事。我很神秘。

我在这里寄希望于:

  • 也许有人可以给我一些洞察力首先如何发生这种情况以及如何避免它。
  • 也许有人可以告诉我为什么只有某些项目会突破,即使所有项目都有完全相同的project.properties文件或者是全新的。
  • 将来有这个问题的人会有更好的时间。

4 个答案:

答案 0 :(得分:24)

我在网上找到的最接近的修补程序是this link,其中只包含部分解决方案。按照该帖子中的说明,不会解决问题,因为它遗漏了一些重要的东西。这是我最终偶然发现的解决方案。

在NetBeans中,请转到此处:

Tools > Options > Miscellaneous > Ant

在窗口底部,有一个标有Properties的框。粘贴如下:

libs.CopyLibs.classpath=C\:\\Program Files\\NetBeans 7.1\\java\\ant\\extra\\org-netbeans-modules-java-j2seproject-copylibstask.jar

NetBeans 7.1替换为您的实际安装路径。这实际上就是它的全部!让它变得棘手的是,当您单击OK时,NetBeans似乎会对此字段中的文本进行一些解析。具体来说,它将反斜杠视为转义,并且有时会添加反斜杠

这就是为什么我花了这么长时间才找到:我在链接中尝试了解决方案(例如C:\Program Files\Netbeans等),但它没有用,但后来我回到这个窗口发现了这个: C\:Program Files等等“哦!”我想,“我输错了!我真是个傻瓜!”所以我“纠正”它到C:\并再次尝试 - 仍然没有成功。原来NetBeans将添加反斜杠以转义:,但只会删除它在此处找到的任何其他单反斜杠。

我仍然不知道为什么会发生这种情况,或者为什么它似乎只影响某些项目。

答案 1 :(得分:7)

我在Mac上安装了NetBeans 7.1.2,卸载了它,然后安装了7.3.1。我得到了同样的错误。以下是我必须要解决的问题:转到

  

NetBeans菜单&gt;偏好&gt; Java选项卡&gt; 特性

我注意到属性仍然是应用程序的旧编号,因此我必须将7.1.2更改为7.3.1,然后才能工作。

enter image description here

感谢您让我走上正轨!

答案 2 :(得分:0)

我的设置问题原来是在我作为库包含的项目中。它仍然具有CopyLibs-2文件夹而不是升级的CopyLibs文件夹,但是nblibraries.properties具有升级的libs.CopyLibs文件。我不知道如何触发升级,所以我做了以下事情:

  1. 已删除lib / CopyLibs-2
  2. 右键单击Libraries文件夹,然后选择Add Library。
  3. 导入的CopyLibs任务
  4. 添加了CopyLibs任务库
  5. 这使得CopyLibs显示在我的Libraries文件夹中,这看起来有点奇怪,因为它通常像jnlp一样隐藏,但它没有设置工具&gt;的全局libs.CopyLibs.classpath。 Java&gt; Ant Properties。

    花了几次尝试以正确的方式清除东西并添加它。有时它会添加,但然后显示问题,解决消息将是&#39;&#34; CopyLibs&#34;图书馆遗失物品&#39;和问题:该项目使用名为&#34; CopyLibs&#34;的类库。但是这个库的classpath项目缺失了#39;我不明白为什么整个过程如此挑剔和神奇。

    我还注意到IDE已更新我的project.properties以将javac.classpath从无变为$ {libs.CopyLibs.classpath}

答案 3 :(得分:0)

背景信息:Ant属性保存在用户目录的build.properties文件中。这取决于平台,但可以通过查看nbproject / private / private.properties文件找到。然后查看user.properties.file下的路径并查看指向的文件 - 您可以看到Ant构建中使用的路径 - 以及它们是否正确。