2

我已经开始使用带有 Java 10 的 NetBeans 9.0(孵化)。我创建了一个新的测试 Java 应用程序项目,并在创建它时勾选了“使用专用文件夹存储库”(“\lib”)。我还将 JDK/Java 版本设置为10. 然后我将 Apache Commons Codec 1.11 作为依赖库包含在内。除了从主类的包中导入Base64类之外,我没有做任何其他事情。binary

但是,当我构建应用程序时,NetBeans 不会在lib目录中创建dist目录,也不会创建包含org.apache.commons.codec.*库中包的胖 Jar。

这似乎是 Java 10 特有的,因为当我将 JDK/Java 版本更改为 8 时,它的行为符合预期(跨过复制库)。

编辑:target我已经看到了对其他问题的各种答案(关于 Netbeans 和 Java 的其他版本) ,这些问题提出了各种condition片段来放置在构建脚本中以覆盖build-impl.xml,我试图没有效果。

这留下了两个问题?

  1. Netbeans 9.0 是否不完全支持 Java 10,导致 copyLibs 任务静默失败?
  2. Java 10 是否不支持创建lib与应用程序 jar 相关的目录,还是我未能正确配置项目?

注意:测试项目的目的是诊断我是否可以重现影响需要更新以使用更新版本的 Java 的较大项目的问题。旧项目使用了一些由我工作的公司内部开发的库。我们没有必要的资源来设置和迁移到基于 Maven 的构建系统,并且仍在使用 Ant。

4

2 回答 2

4

我可以重现你的问题。

不幸的是,这是一个 NetBeans 9.0 错误。如果“源/二进制格式”是 JDK 9 或 JDK 10,请参阅NETBEANS-1097“复制依赖库”不起作用

该错误描述了一种可能的解决方法,Halvor 的回答中也提到了该解决方法。但是,尽管这似乎对您不起作用(根据您的评论),但它对我部分起作用:

  • 按照错误中的详细说明编辑nbproject/build-impl.xml
  • 清理并构建项目。
  • 完成之后commons-codec-1.11.jar被放置在目录dist/lib中。
  • 但是,我仍然没有得到脂肪罐。

我尝试的另一件事是{project } > 右键单击​​ > Properties > Libraries,然后编辑Libraries Folder字段,将其从相对路径更改为绝对路径。这似乎并没有使事情变得更好或更糟。

于 2018-09-21T08:21:08.040 回答
3

此问题的一种解决方法似乎是修改您的build-impl.xml.

找到以下条件:

<condition property="do.mkdist">
    <and>
        <isset property="do.archive"/>
        <isset property="libs.CopyLibs.classpath"/>
        <not>
            <istrue value="${mkdist.disabled}"/>
        </not>
        <not>
            <istrue value="${modules.supported.internal}"/>
        </not>
    </and>
</condition>

并删除关于 的部分modules.supported.internal,留下:

<condition property="do.mkdist">
    <and>
        <isset property="do.archive"/>
        <isset property="libs.CopyLibs.classpath"/>
        <not>
            <istrue value="${mkdist.disabled}"/>
        </not>
    </and>
</condition>

不幸的是,NetBeans 有时会覆盖此更改,但它仍应作为一种解决方法。

于 2018-09-21T05:53:02.053 回答