修改后的答案
假设:NetBeans 版本 6.9.1(尽管可能适用于大多数或所有 6.x 版本)、替代构建系统(例如 Maven)not使用...使用默认值(Ant)。
NetBeans 默认情况下使用Ant http://ant.apache.org/作为它的构建系统,用于执行编译项目、构建项目、从项目中清理构建文件等操作。Ant 有两个适用于此的概念:目标和任务。 Atarget在Ant的词汇中,简单来说就是一个“命令”或者是某项特定工作需要完成的一系列工作。在 NetBeans 中,常见目标有“编译”、“构建”、“清理和构建”等。目标完成的“作业”包括(除其他外)Anttasks。在 NetBeans 中,一项任务(与回答这个问题特别相关)是Javac任务 http://ant.apache.org/manual/Tasks/javac.html。这是Ant用来编译的任务.java
文件到.class
files.
基于 Ant 的项目(即 NetBeans 项目)使用该文件build.xml
控制构建过程并告诉 Ant 如何实现目标。在 NetBeans 项目中,build.xml
默认情况下,可以在项目的根目录中找到。然而,NetBeans 使用用户可扩展的build.xml
文件。 NetBeans定义的核心目标和任务实际上位于nbprojects/build-impl.xml
并导入到build.xml
在文件的前几行内。理论上,用户可以添加或覆盖中的内容build.xml
而 NetBeans 定义的核心配置在build-impl.xml
file.
如果你查看默认的nbproject/build-impl.xml
在 NetBeans Java 项目的文件中,您会发现 Javac 任务被引用两次。 (搜索 ”<javac
".) 两者都在宏定义中,因此深入 NetBean 的默认构建配置的复杂性。如果我们参考Javac 任务文档 http://ant.apache.org/manual/Tasks/javac.html我们发现任务在全局指定的位置使用编译器build.compiler
财产,由compiler
指定的属性<javac... />
任务,或者是运行时使用的默认 Java 编译器,因此也是运行 NetBeans 时使用的编译器(因为它是启动 Ant 进程的工具)。既然我们看不到build.compiler
or the compiler
任何地方的属性(默认情况下build-impl.xml
),那么我们只能断定正在使用默认值。
所以这里我们有(或多或少正确的)第一个答案。NetBeans 使用默认用于执行 NetBeans 的 JDK 进行编译。看起来实际上比这个简单的答案复杂一点,但本质上是正确的。如果您查看 Javac 任务的文档,它会提到“实现 CompilerAdapter 接口的类”,这表明 Ant(以及 NetBeans)不是直接调用 javac 可执行文件,而是使用编译器类(很可能 javac 可执行文件也使用该编译器类)进行编译。请参阅原答案下面确定用于运行 NetBeans 的 JDK。
那么,如果您不想使用用于运行 NetBeans 的默认 JDK,该怎么办?这是哪里 ”Java 平台进入“工具”菜单,然后单击“Java 平台”。您可能在这里只定义了一个平台。(顺便说一句,这实际上是默认使用 JDK 的最正确答案......如果您想针对另一个 Java 版本进行编译(假设您的默认 JDK 是 1.6,但您想针对 1.5 进行编译),那么您需要在系统上的某个位置安装备用 JDK,然后在 NetBeans 的 Java 平台管理器中配置一个平台。(我将把它作为练习,让您查找有关如何添加 Java 平台的文档。对 wiki 的粗略搜索没有发现任何明显的内容。在任何情况下这种情况,这是相当不言自明的。)
在管理器中创建新平台后,您可以在“项目”选项卡中右键单击您的项目,单击“属性”,然后单击“库”。在顶部,您可以为项目选择适当的 Java 平台。一旦您更改此值并单击“确定”,NetBeans 就会对您的值进行多项调整build-impl.xml
文件,将其指向要编译的新 JDK。 (对于我们当中真正的极客来说,复制一份nbproject
进行此更改之前的目录并diff
反对新内容nbproject
进行更改后的目录。)这些更改指示 Javac Ant 任务使用指定平台的(等效的)javac 可执行文件。所以这里我们有最正确的答案:NetBeans 使用相等的项目中指定的 javac 可执行文件(由 Ant javac 任务调用)的Java平台位于图书馆项目属性的节点。
原答案
NetBeans使用的JDK的路径可以在netbeans.conf
文件。寻找netbeans_jdkhome
entry.
您还可以在运行时指定 jdkhome(*给出了 NIX 示例):
netbeans --jdkhome /usr/bin/jdk1.6.0_22
The netbeans.conf
根据您使用的操作系统,可以在不同的位置找到该文件。请参阅NetBeans.conf 常见问题解答 http://wiki.netbeans.org/FaqNetbeansConf在 NetBeans wiki 上获取查找该文件的帮助。
一些补充评论...
...您可以在项目属性中指定 -target 选项。在 NetBeans 6.9 中,右键单击该项目,然后选择“属性”。单击编译节点。将您的 -target 添加到附加编译器选项.
...我在一些地方读到,指定目标并不能保证代码将在版本低于构建它的 JDK 的 JRE 上运行。换句话说,建议似乎是,如果您想要 1.5 二进制文件,则使用 1.5 JDK 进行编译。