Netbeans 9.0孵化-对于迁移/更新的Java 10项目,不在`dist`中建立`lib`目录

时间:2018-09-19 14:45:46

标签: ant java-10 netbeans-9

我已经开始将NetBeans 9.0与Java 10一起使用(孵化)。我创建了一个新的测试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时,它表现出预期的效果(已复制的库)。

编辑:我已经看到了其他问题(关于其他版本的Netbeans和Java)的各种答案,这些问题提出了各种targetcondition片段来放置在构建中脚本来覆盖build-impl.xml,而我尝试不起作用。

这有两个问题吗?

  1. Netbeans 9.0是否不完全支持Java 10,从而导致copyLibs任务静默失败?
  2. Java 10是否不支持相对于应用程序jar创建lib目录,还是我无法正确配置项目?

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

2 个答案:

答案 0 :(得分:3)

我可以重现您的问题。

不幸的是,这是一个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 中。
  • 但是,我仍然没有得到那个胖子。

我尝试的另一件事是 {项目}>右键单击>“属性”>“库” ,然后编辑“库文件夹” 字段,将其从相对路径更改为绝对路径路径。这似乎并没有使事情变得更好或更糟。

答案 1 :(得分:2)

此问题的一种解决方法似乎是修改您的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有时会覆盖此更改,但仍应作为一种解决方法。