我已经开始将 NetBeans 9.0(孵化)与 Java 10 一起使用。我创建了一个新的测试 Java 应用程序项目,并在创建它时勾选了“使用专用文件夹来存储库”(“\lib”)。我还将 JDK/Java 版本设置为 10
。然后我将 Apache Commons Codec 1.11 作为依赖库包括在内。除了从主类的 binary
包中导入 Base64
类之外,我没有做任何其他事情。
但是,当我构建应用程序时,NetBeans 不会在 dist
目录中创建 lib
目录,也不会创建包含 的 fat Jar >org.apache.commons.codec.*
来自库的包。
这似乎特定于 Java 10,因为当我将 JDK/Java 版本更改为 8 时,它的行为符合预期(复制库)。
编辑: 我看到了其他问题(关于其他版本的 Netbeans 和 Java)的各种答案,这些问题提出了各种目标
和条件
放置在构建脚本中以覆盖 build-impl.xml
的片段,我试过没有效果。
这还有两个问题?
- Netbeans 9.0 是否不完全支持 Java 10,导致 copyLibs 任务静默失败?
- Java 10 是否不支持创建与应用程序 jar 相关的
lib
目录,还是我未能正确配置项目?
注意:测试项目的目的是诊断我是否可以重现影响需要更新以使用较新版本的 Java 的较大项目的问题。旧项目使用了我工作的公司内部开发的许多库。我们没有必要的资源来设置和迁移到基于 Maven 的构建系统,并且仍在使用 Ant。
最佳答案
我可以重现你的问题。
不幸的是,这是一个 NetBeans 9.0 错误。参见 NETBEANS-1097 "Copy Dependent Libraries" does not work if "Source/Binary Format" is JDK 9 or JDK 10 .
该错误描述了一种可能的解决方法,Halvor 的回答中也提到了该方法。然而,尽管这似乎对您不起作用(根据您的评论),但它对我有部分作用:
- 按照错误中的详细说明编辑 nbproject/build-impl.xml。
- 清理并构建项目。
- 完成后 commons-codec-1.11.jar 被放置在目录 dist/lib 中。
- 可是,我还是没有拿到肥 jar 。
我尝试的另一件事是 {project } > 右键单击 > Properties > Libraries,然后编辑 Libraries Folder 字段,将其从相对路径更改为绝对路径小路。这似乎并没有使事情变得更好或更糟。
关于ant - Netbeans 9.0 孵化 - 不会在 `lib` 中为迁移/更新的 Java 10 项目创建 `dist` 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52408574/