Netbeans Dev (9.x) Java 项目不会在 Netbeans 之外构建
Netbeans Dev (9.x) Java Projects will not build outside of Netbeans
我们使用 Netbeans 生成我们的 Ant 构建文件并进行一些小的调整。这使我们能够在 Netbeans 内部构建我们的项目,并在命令行上使用 运行 ant 在 Netbeans 外部构建我们的项目。后者对于诸如完全重建或 Jenkins 连续构建和测试之类的事情很有用。
我们会根据需要自定义 build.xml 文件,这对我们使用 Netbeans 8.2 和之前的版本很有效,但是对于 Netbeans pre-9(包括 201708280001 在内的开发版本),Netbeans 已经开始破坏我们的在命令行上 运行 时构建。
我们收到以下错误:
BUILD FAILED
C:\Users\Stephen\hcs\orc.trunk\nb\build.xml:278: The following error occurred while executing this line:
C:\Users\Stephen\hcs\orc.trunk\nb\build.xml:229: The following error occurred while executing this line:
C:\Users\Stephen\hcs\orc.trunk\nb\ServerLibWOC\nbproject\build-impl.xml:1623: Unknown attribute [modulepath]
Total time: 2 minutes 35 seconds
在 Netbeans 内部构建时,它工作正常。
如果我手动检查所有构建-impl.xml 文件,我可以删除模块路径引用并且构建在命令行和 Netbeans 上都能正常工作,但最终 Netbeans 将重新引入模块路径设置。所以,这不是一个令人满意的长期解决方案。
我试过升级到最新版本的Ant (1.9.9) 和Netbeans Dev,但没有效果。我假设有一些库是 Netbeans 自带的 Ant 版本,但我的 Ant 1.9.9 中没有,但我不知道它是什么。
有没有人找到让 Ant 从命令行正确构建 Netbeans 项目的解决方案?
更新 1
用 Ant 1.10.1 试过,结果相同。
更新 2
运行Java9下的命令行Ant没有解决问题
更新 3
将我的测试隔离到一个项目 (orcb) 并确保它 运行 在 Java9 下。仍然失败:
Stephen@Stephen-VPC ~/hcs/orc.trunk/nb/orcb
$ echo $JAVA_HOME
/cygdrive/c/jdk1.9.ea
Stephen@Stephen-VPC ~/hcs/orc.trunk/nb/orcb
$ java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
$ ./build.sh
Buildfile: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build.xml
-pre-init:
-init-private:
-init-user:
-init-project:
-init-macrodef-property-impl:
-set-source-dir:
-init-macrodef-property:
-init-modules-supported:
-do-init:
-post-init:
-init-check:
-init-ap-cmdline-properties:
-init-macrodef-modulename:
-init-source-module-properties:
-init-macrodef-javac-with-module:
-init-which-javac-to-use:
-init-macrodef-javac-with-processors.java.1.8:
-init-macrodef-javac-with-processors.java.9:
-init-macrodef-javac-with-processors:
-init-macrodef-javac-without-processors.java.1.8:
-init-macrodef-javac-without-processors.java.9:
-init-macrodef-javac-without-processors:
-init-macrodef-javac:
-init-macrodef-test-impl:
-init-macrodef-junit-init:
-init-test-properties:
-init-macrodef-junit-prototype-with-module:
-init-macrodef-junit-prototype-without-module:
-init-macrodef-junit-single:
-init-macrodef-junit-batch:
-init-macrodef-junit:
-init-macrodef-junit-impl:
Trying to override old definition of task http://www.netbeans.org/ns/j2se-project/3:test-impl
-init-macrodef-testng:
-init-macrodef-testng-impl:
-init-macrodef-test:
-init-macrodef-junit-debug-impl:
-init-macrodef-test-debug-junit:
-init-macrodef-testng-debug:
-init-macrodef-testng-debug-impl:
-init-macrodef-test-debug-testng:
-init-macrodef-test-debug:
-init-debug-args:
-init-macrodef-nbjpda:
-init-macrodef-debug:
-init-macrodef-java-with-module:
-init-macrodef-java-with-unnamed-module:
-init-macrodef-java-without-module:
-init-macrodef-java:
-init-presetdef-jar:
-init-ap-cmdline-supported:
-init-ap-cmdline:
init:
-deps-clean-init:
deps-clean:
-do-clean:
[delete] Deleting directory C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build
-post-clean:
clean:
-pre-init:
-init-private:
-init-user:
-init-project:
-init-macrodef-property-impl:
-set-source-dir:
-init-macrodef-property:
-init-modules-supported:
-do-init:
-post-init:
-init-check:
-init-ap-cmdline-properties:
-init-macrodef-modulename:
-init-source-module-properties:
-init-macrodef-javac-with-module:
-init-which-javac-to-use:
-init-macrodef-javac-with-processors.java.1.8:
-init-macrodef-javac-with-processors.java.9:
-init-macrodef-javac-with-processors:
-init-macrodef-javac-without-processors.java.1.8:
-init-macrodef-javac-without-processors.java.9:
-init-macrodef-javac-without-processors:
-init-macrodef-javac:
-init-macrodef-test-impl:
Trying to override old definition of task http://www.netbeans.org/ns/j2se-project/3:test-impl
-init-macrodef-junit-init:
-init-test-properties:
-init-macrodef-junit-prototype-with-module:
-init-macrodef-junit-prototype-without-module:
-init-macrodef-junit-single:
-init-macrodef-junit-batch:
-init-macrodef-junit:
-init-macrodef-junit-impl:
Trying to override old definition of task http://www.netbeans.org/ns/j2se-project/3:test-impl
-init-macrodef-testng:
-init-macrodef-testng-impl:
-init-macrodef-test:
-init-macrodef-junit-debug-impl:
-init-macrodef-test-debug-junit:
-init-macrodef-testng-debug:
-init-macrodef-testng-debug-impl:
-init-macrodef-test-debug-testng:
-init-macrodef-test-debug:
-init-debug-args:
-init-macrodef-nbjpda:
-init-macrodef-debug:
-init-macrodef-java-with-module:
-init-macrodef-java-with-unnamed-module:
-init-macrodef-java-without-module:
-init-macrodef-java:
-init-presetdef-jar:
-init-ap-cmdline-supported:
-init-ap-cmdline:
init:
-deps-jar-init:
deps-jar:
-check-automatic-build:
-clean-after-automatic-build:
-verify-automatic-build:
-pre-pre-compile:
[mkdir] Created dir: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
-add-build-versions-status:
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
-pre-compile:
-copy-persistence-xml:
-compile-depend:
-do-compile:
[mkdir] Created dir: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\empty
[mkdir] Created dir: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\generated-sources\ap-source-output
[javac] Compiling 1058 source files to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[javac] warning: [options] source value 1.6 is obsolete and will be removed in a future release
[javac] warning: [options] target value 1.6 is obsolete and will be removed in a future release
[javac] warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
[javac] Note: Some input files use or override a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 3 warnings
[copy] Copying 35 files to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
-init-check-cobertura:
-instrument-coverage:
-post-compile:
compile:
-pre-jar:
-check-module-main-class:
-set-module-main-class:
-pre-pre-jar:
[mkdir] Created dir: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\dist
-do-jar-create-manifest:
-do-jar-copy-manifest:
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build
-do-jar-set-mainclass:
-do-jar-set-profile:
-do-jar-set-splashscreen:
-do-jar-jar:
-init-macrodef-copylibs:
-do-jar-copylibs:
[copylibs] Copy libraries to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\dist\lib.
[copylibs] Building jar: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\dist\ORMC.jar
[echo] To run this application from the command line without Ant, try:
[echo] java -jar "C:\Users\Stephen\hcs\orc.trunk\nb\orcb\dist\ORMC.jar"
-do-jar-delete-manifest:
-do-jar-without-libraries:
-do-jar-with-libraries:
-post-jar:
[mkdir] Created dir: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\dist\signed
[jar] Building jar: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\dist\signed\ORMC.jar
-do-jar:
-pre-deploy:
-check-jlink:
-do-deploy:
-post-deploy:
deploy:
-check-filename-prop:
-set-jnlp-filename-custom:
-set-jnlp-filename-default:
-init-filename:
-test-jnlp-enabled:
-create-tmp-manifest:
-copy-tmp-manifest:
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build
-security-props-check:
-test-signjars-task-available:
-unavailable-signjars-task:
-check-signing-possible:
-set-mixed-code-properties:
-init-macrodef-extend-manifest:
-add-trusted-only-attribute:
-add-trusted-library-attribute:
-check-manifest-codebase:
-extend-manifest-codebase-copy:
-extend-manifest-codebase-web:
-extend-manifest-codebase-other:
-extend-manifest-codebase-override-warning:
-extend-manifest-codebase-override:
-check-manifest-permissions:
-extend-manifest-permissions-sandbox:
-extend-manifest-permissions-all:
-extend-manifest-permissions-override:
-extend-manifest-application-name:
-check-manifest-application-library-allowable-codebase:
-extend-manifest-application-library-allowable-codebase-copy:
-extend-manifest-application-library-allowable-codebase-web:
-extend-manifest-application-library-allowable-codebase-other:
-extend-manifest-application-library-allowable-codebase-override-warning:
-extend-manifest-application-library-allowable-codebase-override:
-check-manifest-caller-allowable-codebase:
-extend-manifest-caller-allowable-codebase-copy:
-extend-manifest-caller-allowable-codebase-web:
-extend-manifest-caller-allowable-codebase-other:
-extend-manifest-caller-allowable-codebase-override-warning:
-extend-manifest-caller-allowable-codebase-override:
-add-manifest-security:
-test-jnlp-type:
-do-jar-applet:
-do-jar-jnlp-application:
-do-jar-jnlp-component:
-do-jar-jnlp:
jnlp:
jar:
-pre-init:
-init-private:
-init-user:
-init-project:
-init-macrodef-property-impl:
-set-source-dir:
-init-macrodef-property:
-init-modules-supported:
-do-init:
-post-init:
-init-check:
-init-ap-cmdline-properties:
-init-macrodef-modulename:
-init-source-module-properties:
-init-macrodef-javac-with-module:
-init-which-javac-to-use:
-init-macrodef-javac-with-processors.java.1.8:
-init-macrodef-javac-with-processors.java.9:
-init-macrodef-javac-with-processors:
-init-macrodef-javac-without-processors.java.1.8:
-init-macrodef-javac-without-processors.java.9:
-init-macrodef-javac-without-processors:
-init-macrodef-javac:
-init-macrodef-test-impl:
Trying to override old definition of task http://www.netbeans.org/ns/j2se-project/3:test-impl
-init-macrodef-junit-init:
-init-test-properties:
-init-macrodef-junit-prototype-with-module:
-init-macrodef-junit-prototype-without-module:
-init-macrodef-junit-single:
-init-macrodef-junit-batch:
-init-macrodef-junit:
-init-macrodef-junit-impl:
Trying to override old definition of task http://www.netbeans.org/ns/j2se-project/3:test-impl
-init-macrodef-testng:
-init-macrodef-testng-impl:
-init-macrodef-test:
-init-macrodef-junit-debug-impl:
-init-macrodef-test-debug-junit:
-init-macrodef-testng-debug:
-init-macrodef-testng-debug-impl:
-init-macrodef-test-debug-testng:
-init-macrodef-test-debug:
-init-debug-args:
-init-macrodef-nbjpda:
-init-macrodef-debug:
-init-macrodef-java-with-module:
-init-macrodef-java-with-unnamed-module:
-init-macrodef-java-without-module:
-init-macrodef-java:
-init-presetdef-jar:
-init-ap-cmdline-supported:
-init-ap-cmdline:
init:
-deps-jar-init:
deps-jar:
-check-automatic-build:
-clean-after-automatic-build:
-verify-automatic-build:
-pre-pre-compile:
-add-build-versions-status:
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
-pre-compile:
-copy-persistence-xml:
-compile-depend:
-do-compile:
-init-check-cobertura:
-instrument-coverage:
-post-compile:
compile:
-pre-pre-compile-test:
[mkdir] Created dir: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\test\classes
-pre-compile-test:
-init-test-javac-module-properties-with-module:
-init-test-module-properties-without-module:
-init-test-module-properties:
-compile-test-depend:
-do-compile-test:
BUILD FAILED
C:\Users\Stephen\hcs\orc.trunk\nb\orcb\nbproject\build-impl.xml:1660: Unknown attribute [modulepath]
Total time: 25 seconds
注意关于 source 1.6 的警告,这是 Java9 中的新警告。这是因为需要构建我们的代码,以便它可以 运行 在较旧的 JVM 下(我们无法成功推动客户升级)。
build.sh内容如下:
$ cat build.sh
export JAVA_HOME=/cygdrive/c/jdk1.9.ea
"c:/Program Files (x86)/NetBeans Dev 201709180002/extide/ant/bin/ant" -Dplatforms.JDK32_1.6.home=c:/jdk1.6.0_43 -Dplatforms.JDK32_1.7.home=C:/jdk_1.7.0_79/ -Dlibs.CopyLibs.classpath=C:/Users/Stephen/hcs/orc.trunk/lib/netbeans/org-netbeans-modules-java-j2seproject-copylibstask.jar clean jar compile-test
注意:平台引用用于确保我们针对旧版本 Java 正确构建。
使用 Netbeans 打开了一个工单:
https://netbeans.org/bugzilla/show_bug.cgi?id=271487
更新 4
新工单:https://issues.apache.org/jira/browse/NETBEANS-1106
更新 5
这也会影响 Netbeans 11,如果您使用的是 Java 1.8 或更早版本,甚至无法在 Netbeans 中正确构建。
正如评论部分所指出的,当您尝试使用 Java-9 之前发布的 java 版本执行基于 java-9 的项目时,会出现此类错误发布版本。
因此,您可以通过更新 JAVA_HOME 以包含 Java9 的路径来更改计算机上安装的 Java 的版本jdk.
遍历项目目录,使用 java -version
确认,您将使用 java 版本“9”。一旦确认,您也可以执行您的项目,它应该已解决。
将问题追踪到我们自己的一个构建脚本中的问题。为了解决不同的 Netbeans 问题,我们定义了自己的宏:
<macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
在那里,对于 Java 1.8,我们没有处理 modulepath 属性,我们添加了:
<attribute default="${empty.dir}" name="modulepath"/>
这似乎解决了我们的问题。
我们使用 Netbeans 生成我们的 Ant 构建文件并进行一些小的调整。这使我们能够在 Netbeans 内部构建我们的项目,并在命令行上使用 运行 ant 在 Netbeans 外部构建我们的项目。后者对于诸如完全重建或 Jenkins 连续构建和测试之类的事情很有用。
我们会根据需要自定义 build.xml 文件,这对我们使用 Netbeans 8.2 和之前的版本很有效,但是对于 Netbeans pre-9(包括 201708280001 在内的开发版本),Netbeans 已经开始破坏我们的在命令行上 运行 时构建。
我们收到以下错误:
BUILD FAILED
C:\Users\Stephen\hcs\orc.trunk\nb\build.xml:278: The following error occurred while executing this line:
C:\Users\Stephen\hcs\orc.trunk\nb\build.xml:229: The following error occurred while executing this line:
C:\Users\Stephen\hcs\orc.trunk\nb\ServerLibWOC\nbproject\build-impl.xml:1623: Unknown attribute [modulepath]
Total time: 2 minutes 35 seconds
在 Netbeans 内部构建时,它工作正常。
如果我手动检查所有构建-impl.xml 文件,我可以删除模块路径引用并且构建在命令行和 Netbeans 上都能正常工作,但最终 Netbeans 将重新引入模块路径设置。所以,这不是一个令人满意的长期解决方案。
我试过升级到最新版本的Ant (1.9.9) 和Netbeans Dev,但没有效果。我假设有一些库是 Netbeans 自带的 Ant 版本,但我的 Ant 1.9.9 中没有,但我不知道它是什么。
有没有人找到让 Ant 从命令行正确构建 Netbeans 项目的解决方案?
更新 1
用 Ant 1.10.1 试过,结果相同。
更新 2
运行Java9下的命令行Ant没有解决问题
更新 3
将我的测试隔离到一个项目 (orcb) 并确保它 运行 在 Java9 下。仍然失败:
Stephen@Stephen-VPC ~/hcs/orc.trunk/nb/orcb
$ echo $JAVA_HOME
/cygdrive/c/jdk1.9.ea
Stephen@Stephen-VPC ~/hcs/orc.trunk/nb/orcb
$ java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
$ ./build.sh
Buildfile: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build.xml
-pre-init:
-init-private:
-init-user:
-init-project:
-init-macrodef-property-impl:
-set-source-dir:
-init-macrodef-property:
-init-modules-supported:
-do-init:
-post-init:
-init-check:
-init-ap-cmdline-properties:
-init-macrodef-modulename:
-init-source-module-properties:
-init-macrodef-javac-with-module:
-init-which-javac-to-use:
-init-macrodef-javac-with-processors.java.1.8:
-init-macrodef-javac-with-processors.java.9:
-init-macrodef-javac-with-processors:
-init-macrodef-javac-without-processors.java.1.8:
-init-macrodef-javac-without-processors.java.9:
-init-macrodef-javac-without-processors:
-init-macrodef-javac:
-init-macrodef-test-impl:
-init-macrodef-junit-init:
-init-test-properties:
-init-macrodef-junit-prototype-with-module:
-init-macrodef-junit-prototype-without-module:
-init-macrodef-junit-single:
-init-macrodef-junit-batch:
-init-macrodef-junit:
-init-macrodef-junit-impl:
Trying to override old definition of task http://www.netbeans.org/ns/j2se-project/3:test-impl
-init-macrodef-testng:
-init-macrodef-testng-impl:
-init-macrodef-test:
-init-macrodef-junit-debug-impl:
-init-macrodef-test-debug-junit:
-init-macrodef-testng-debug:
-init-macrodef-testng-debug-impl:
-init-macrodef-test-debug-testng:
-init-macrodef-test-debug:
-init-debug-args:
-init-macrodef-nbjpda:
-init-macrodef-debug:
-init-macrodef-java-with-module:
-init-macrodef-java-with-unnamed-module:
-init-macrodef-java-without-module:
-init-macrodef-java:
-init-presetdef-jar:
-init-ap-cmdline-supported:
-init-ap-cmdline:
init:
-deps-clean-init:
deps-clean:
-do-clean:
[delete] Deleting directory C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build
-post-clean:
clean:
-pre-init:
-init-private:
-init-user:
-init-project:
-init-macrodef-property-impl:
-set-source-dir:
-init-macrodef-property:
-init-modules-supported:
-do-init:
-post-init:
-init-check:
-init-ap-cmdline-properties:
-init-macrodef-modulename:
-init-source-module-properties:
-init-macrodef-javac-with-module:
-init-which-javac-to-use:
-init-macrodef-javac-with-processors.java.1.8:
-init-macrodef-javac-with-processors.java.9:
-init-macrodef-javac-with-processors:
-init-macrodef-javac-without-processors.java.1.8:
-init-macrodef-javac-without-processors.java.9:
-init-macrodef-javac-without-processors:
-init-macrodef-javac:
-init-macrodef-test-impl:
Trying to override old definition of task http://www.netbeans.org/ns/j2se-project/3:test-impl
-init-macrodef-junit-init:
-init-test-properties:
-init-macrodef-junit-prototype-with-module:
-init-macrodef-junit-prototype-without-module:
-init-macrodef-junit-single:
-init-macrodef-junit-batch:
-init-macrodef-junit:
-init-macrodef-junit-impl:
Trying to override old definition of task http://www.netbeans.org/ns/j2se-project/3:test-impl
-init-macrodef-testng:
-init-macrodef-testng-impl:
-init-macrodef-test:
-init-macrodef-junit-debug-impl:
-init-macrodef-test-debug-junit:
-init-macrodef-testng-debug:
-init-macrodef-testng-debug-impl:
-init-macrodef-test-debug-testng:
-init-macrodef-test-debug:
-init-debug-args:
-init-macrodef-nbjpda:
-init-macrodef-debug:
-init-macrodef-java-with-module:
-init-macrodef-java-with-unnamed-module:
-init-macrodef-java-without-module:
-init-macrodef-java:
-init-presetdef-jar:
-init-ap-cmdline-supported:
-init-ap-cmdline:
init:
-deps-jar-init:
deps-jar:
-check-automatic-build:
-clean-after-automatic-build:
-verify-automatic-build:
-pre-pre-compile:
[mkdir] Created dir: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
-add-build-versions-status:
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
-pre-compile:
-copy-persistence-xml:
-compile-depend:
-do-compile:
[mkdir] Created dir: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\empty
[mkdir] Created dir: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\generated-sources\ap-source-output
[javac] Compiling 1058 source files to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[javac] warning: [options] source value 1.6 is obsolete and will be removed in a future release
[javac] warning: [options] target value 1.6 is obsolete and will be removed in a future release
[javac] warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
[javac] Note: Some input files use or override a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 3 warnings
[copy] Copying 35 files to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
-init-check-cobertura:
-instrument-coverage:
-post-compile:
compile:
-pre-jar:
-check-module-main-class:
-set-module-main-class:
-pre-pre-jar:
[mkdir] Created dir: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\dist
-do-jar-create-manifest:
-do-jar-copy-manifest:
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build
-do-jar-set-mainclass:
-do-jar-set-profile:
-do-jar-set-splashscreen:
-do-jar-jar:
-init-macrodef-copylibs:
-do-jar-copylibs:
[copylibs] Copy libraries to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\dist\lib.
[copylibs] Building jar: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\dist\ORMC.jar
[echo] To run this application from the command line without Ant, try:
[echo] java -jar "C:\Users\Stephen\hcs\orc.trunk\nb\orcb\dist\ORMC.jar"
-do-jar-delete-manifest:
-do-jar-without-libraries:
-do-jar-with-libraries:
-post-jar:
[mkdir] Created dir: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\dist\signed
[jar] Building jar: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\dist\signed\ORMC.jar
-do-jar:
-pre-deploy:
-check-jlink:
-do-deploy:
-post-deploy:
deploy:
-check-filename-prop:
-set-jnlp-filename-custom:
-set-jnlp-filename-default:
-init-filename:
-test-jnlp-enabled:
-create-tmp-manifest:
-copy-tmp-manifest:
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build
-security-props-check:
-test-signjars-task-available:
-unavailable-signjars-task:
-check-signing-possible:
-set-mixed-code-properties:
-init-macrodef-extend-manifest:
-add-trusted-only-attribute:
-add-trusted-library-attribute:
-check-manifest-codebase:
-extend-manifest-codebase-copy:
-extend-manifest-codebase-web:
-extend-manifest-codebase-other:
-extend-manifest-codebase-override-warning:
-extend-manifest-codebase-override:
-check-manifest-permissions:
-extend-manifest-permissions-sandbox:
-extend-manifest-permissions-all:
-extend-manifest-permissions-override:
-extend-manifest-application-name:
-check-manifest-application-library-allowable-codebase:
-extend-manifest-application-library-allowable-codebase-copy:
-extend-manifest-application-library-allowable-codebase-web:
-extend-manifest-application-library-allowable-codebase-other:
-extend-manifest-application-library-allowable-codebase-override-warning:
-extend-manifest-application-library-allowable-codebase-override:
-check-manifest-caller-allowable-codebase:
-extend-manifest-caller-allowable-codebase-copy:
-extend-manifest-caller-allowable-codebase-web:
-extend-manifest-caller-allowable-codebase-other:
-extend-manifest-caller-allowable-codebase-override-warning:
-extend-manifest-caller-allowable-codebase-override:
-add-manifest-security:
-test-jnlp-type:
-do-jar-applet:
-do-jar-jnlp-application:
-do-jar-jnlp-component:
-do-jar-jnlp:
jnlp:
jar:
-pre-init:
-init-private:
-init-user:
-init-project:
-init-macrodef-property-impl:
-set-source-dir:
-init-macrodef-property:
-init-modules-supported:
-do-init:
-post-init:
-init-check:
-init-ap-cmdline-properties:
-init-macrodef-modulename:
-init-source-module-properties:
-init-macrodef-javac-with-module:
-init-which-javac-to-use:
-init-macrodef-javac-with-processors.java.1.8:
-init-macrodef-javac-with-processors.java.9:
-init-macrodef-javac-with-processors:
-init-macrodef-javac-without-processors.java.1.8:
-init-macrodef-javac-without-processors.java.9:
-init-macrodef-javac-without-processors:
-init-macrodef-javac:
-init-macrodef-test-impl:
Trying to override old definition of task http://www.netbeans.org/ns/j2se-project/3:test-impl
-init-macrodef-junit-init:
-init-test-properties:
-init-macrodef-junit-prototype-with-module:
-init-macrodef-junit-prototype-without-module:
-init-macrodef-junit-single:
-init-macrodef-junit-batch:
-init-macrodef-junit:
-init-macrodef-junit-impl:
Trying to override old definition of task http://www.netbeans.org/ns/j2se-project/3:test-impl
-init-macrodef-testng:
-init-macrodef-testng-impl:
-init-macrodef-test:
-init-macrodef-junit-debug-impl:
-init-macrodef-test-debug-junit:
-init-macrodef-testng-debug:
-init-macrodef-testng-debug-impl:
-init-macrodef-test-debug-testng:
-init-macrodef-test-debug:
-init-debug-args:
-init-macrodef-nbjpda:
-init-macrodef-debug:
-init-macrodef-java-with-module:
-init-macrodef-java-with-unnamed-module:
-init-macrodef-java-without-module:
-init-macrodef-java:
-init-presetdef-jar:
-init-ap-cmdline-supported:
-init-ap-cmdline:
init:
-deps-jar-init:
deps-jar:
-check-automatic-build:
-clean-after-automatic-build:
-verify-automatic-build:
-pre-pre-compile:
-add-build-versions-status:
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
[copy] Copying 1 file to C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\classes
-pre-compile:
-copy-persistence-xml:
-compile-depend:
-do-compile:
-init-check-cobertura:
-instrument-coverage:
-post-compile:
compile:
-pre-pre-compile-test:
[mkdir] Created dir: C:\Users\Stephen\hcs\orc.trunk\nb\orcb\build\test\classes
-pre-compile-test:
-init-test-javac-module-properties-with-module:
-init-test-module-properties-without-module:
-init-test-module-properties:
-compile-test-depend:
-do-compile-test:
BUILD FAILED
C:\Users\Stephen\hcs\orc.trunk\nb\orcb\nbproject\build-impl.xml:1660: Unknown attribute [modulepath]
Total time: 25 seconds
注意关于 source 1.6 的警告,这是 Java9 中的新警告。这是因为需要构建我们的代码,以便它可以 运行 在较旧的 JVM 下(我们无法成功推动客户升级)。
build.sh内容如下:
$ cat build.sh
export JAVA_HOME=/cygdrive/c/jdk1.9.ea
"c:/Program Files (x86)/NetBeans Dev 201709180002/extide/ant/bin/ant" -Dplatforms.JDK32_1.6.home=c:/jdk1.6.0_43 -Dplatforms.JDK32_1.7.home=C:/jdk_1.7.0_79/ -Dlibs.CopyLibs.classpath=C:/Users/Stephen/hcs/orc.trunk/lib/netbeans/org-netbeans-modules-java-j2seproject-copylibstask.jar clean jar compile-test
注意:平台引用用于确保我们针对旧版本 Java 正确构建。
使用 Netbeans 打开了一个工单: https://netbeans.org/bugzilla/show_bug.cgi?id=271487
更新 4
新工单:https://issues.apache.org/jira/browse/NETBEANS-1106
更新 5
这也会影响 Netbeans 11,如果您使用的是 Java 1.8 或更早版本,甚至无法在 Netbeans 中正确构建。
正如评论部分所指出的,当您尝试使用 Java-9 之前发布的 java 版本执行基于 java-9 的项目时,会出现此类错误发布版本。
因此,您可以通过更新 JAVA_HOME 以包含 Java9 的路径来更改计算机上安装的 Java 的版本jdk.
遍历项目目录,使用 java -version
确认,您将使用 java 版本“9”。一旦确认,您也可以执行您的项目,它应该已解决。
将问题追踪到我们自己的一个构建脚本中的问题。为了解决不同的 Netbeans 问题,我们定义了自己的宏:
<macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
在那里,对于 Java 1.8,我们没有处理 modulepath 属性,我们添加了:
<attribute default="${empty.dir}" name="modulepath"/>
这似乎解决了我们的问题。