bootstrap类路径未设置

所以我得到warning: [options] bootstrap class path not set in conjunction with -source 1.6

我即将问3个问题。 我知道我需要设置bootstrap类路径,但我不确定我是怎么理解的。 一个快速谷歌只是发送给我从Oracle页面引用的页面,但我读了Oracle页面,并没有觉得我特别理解它。

我目前在Netbeans上运行此代码,所以我要做的就是点击播放按钮进行编译和运行。 是否有一个属性指示如何编译以便我可以添加引导类路径?

另外,对于即将发生的事件,我将仅在Netbeans上运行并从命令行运行它,使用bootstrap类路径编译的正确方法是什么? 他们说$ javac -source 6 HelloWorld.java但是只是说-source 1.6真的是解决方案吗?

也许是一个更大的问题,我将来如何避免这种类型的警告? 如果我理解甚至一点点,我引用一个旧的java源代码,因此引用较旧的方法。 我不确定这是怎么发生的。

你正在进行交叉编译。 您正在使用JDK 7编译器来编译JDK 6的类。这没关系,但为了避免问题,编译器希望得到JDK 6 rt.jar 。 其背后的原因是,您实际上可能会生成不能与JDK 6一起使用的类,因为您可能使用的是旧语言规则(在本例中为1.6),而是使用全新的引导类。 例如,旧的JDK中可能不存在某些方法。 所以你完成了编译,但是一旦你运行程序,它可能会被一个MethodNotFoundException炸毁。

几个解决方案,你可以选择一个

  • 从JDK 6指定rt.jar 。为什么不使用比旧版本更好的编译器?
  • 使用JDK 6编译器(包含rt.jar )。 如果不需要7个function,为什么甚至使用7。
  • 忽略警告并具有良好的测试覆盖率,以确保您不使用Java 7function
    • 我不了解NetBeans,但是在Eclipse中你也可以说你正在编译JDK 6,所以如果使用Java 7function它就不会实际编译。
  • 改变业务需求并为Java 7编译。

只需右键单击Project属性,然后转到Binding并选择JDK 1.7,前提是您在NetBeans项目中使用它的function,这就是您遇到问题的原因。 这将有助于解决问题,并为我工作。

我知道我需要设置bootstrap类路径,但我不确定我是怎么理解的。

在Netbeans 8.0.2中,转到:

 Run > Set Project Configuration > Customise... 

在“类别”窗口中,转到:

 Build > Compiling 

底部字段是您可以添加的“其他编译器选项”:

 -bootclasspath /your/path/to/lower/java/version/lib/rt.jar