我已经开始使用Java9.0(孵化)和Java10,我创建了一个新的测试NetBeans应用程序项目,并在创建它时标有“使用专用文件夹来存储库”('\lib')。我还将JDK/Java版本设置为10。然后,我将1.11作为一个依赖库。除了从主类中的Base64包导入binary类之外,我没有做任何其他事情。
但是,在构建应用程序时,NetBeans不会在dist目录中创建lib目录,也不会创建包含库中的org.apache.commons.codec.*包的胖Jar。
这似乎是Java 10特有的,因为当我将JDK/Java版本更改为8时,它表现出了预期的行为(跨库复制)。
编辑:--我看到了其他问题(关于Netbeans和Java的其他版本)的各种答案,这些问题提出了各种target和condition片段,将它们放在构建脚本中,以覆盖build-impl.xml,但我试图没有效果。
这还有两个问题吗?
lib目录,还是我未能正确配置项目?注意:测试项目的目的是诊断是否可以重现影响到需要更新以使用更新版本的Java的较大项目的问题。这个旧项目使用的是我工作的公司内部开发的一些图书馆。我们没有建立和迁移到基于Maven的构建系统所需的资源,并且仍然在使用Ant。
发布于 2018-09-21 08:21:08
我可以重现你的问题。
不幸的是,这是一个NetBeans 9.0错误。见如果“源/二进制格式”为JDK 9或JDK 10,则NETBEANS-1097“依赖副本库”无法工作。
这个bug描述了一个可能的解决方法,在Halvor的回答中也提到了这一点。然而,虽然这似乎不适用于你(根据你的评论),但它对我有部分作用:
我尝试过的另一件事是{project }>右键单击> Properties > Libraries,然后编辑Libraries文件夹字段,将其从相对路径更改为绝对路径。这似乎并没有使事情变得更好或更糟。
发布于 2018-09-21 05:53:02
解决此问题的一个方法似乎是修改您的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有时会覆盖此更改,但它仍应起到解决办法的作用。
https://stackoverflow.com/questions/52408574
复制相似问题