20

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

这两个项目共享大量代码,因此我将其分解为新的第三个项目,Common. 在解析引用等之后,NetBeans 不会报告任何错误。一切似乎都很好。Common我顺利地构建了这个项目。然后事情变得很奇怪。

突然,当我尝试构建项目时AB它们编译得很好——但在构建结束时,每个项目都因相同的错误而中断:

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.jarproject.properties文件中正确引用它(它是),并且在<userhome>/.netbeans/version/build.properties文件中也是如此(它是)。该库确实存在于它被引用的所有地方。事实上,NetBeans 似乎./lib默认将此 jar 的副本放入所有 Java 项目的文件夹中。我尝试制作全新的项目并手动引入资源,但无济于事。我很困惑。

我在这里发帖是希望:

  • 也许有人可以让我了解一下这首先是如何发生的以及如何避免它。
  • 也许有人可以告诉我为什么只有某些项目会中断,即使所有项目都具有完全相同的project.properties文件或者是全新的。
  • 将来有这个问题的人会过得更好。
4

4 回答 4

28

我可以在网上找到的最接近的解决方法是这个链接,它只包括部分解决方案。遵循该帖子中的说明不会解决问题,因为它遗漏了一些重要的东西。这是我最终偶然发现的解决方案。

在 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为您的实际安装路径。这实际上就是它的全部!棘手的是,当您单击 时,NetBeans 似乎会对该字段中的文本进行一些解析OK。具体来说,它将反斜杠视为转义符有时还会添加反斜杠

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

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

于 2013-06-06T22:39:34.287 回答
9

我的 Mac 上有 NetBeans 7.1.2,将其卸载,然后安装 7.3.1。我得到了同样的错误。这是我必须解决的问题:转到

NetBeans 菜单 > 首选项 > Java 选项卡 > Ant 子选项卡 > 属性

我注意到属性仍然有应用程序的旧编号,所以我不得不将 7.1.2 更改为 7.3.1,然后它才起作用。

在此处输入图像描述

谢谢你让我走上正轨!

于 2013-11-23T17:23:45.060 回答
1

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

于 2017-01-26T12:33:22.070 回答
0

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

  1. 删除了 lib/CopyLibs-2
  2. 右键单击库文件夹并选择添加库。
  3. 导入的 CopyLibs 任务
  4. 添加了 CopyLibs 任务库

这使得 CopyLibs 出现在我的 Libraries 文件夹中,这看起来有点奇怪,因为它通常像 jnlp 一样隐藏,但它在没有在 Tools > Java > Ant Properties 中设置全局 libs.CopyLibs.classpath 的情况下工作。

花了几次尝试以正确的方式清除内容并添加它。有时它会添加但随后显示问题,解决消息将是““CopyLibs”库缺少项目”和“问题:该项目使用名为“CopyLibs”的类库,但该库的类路径项目缺失”。我不明白为什么整个过程如此繁琐和神奇。

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

于 2015-08-19T22:50:52.433 回答