java - 未设置引导类路径

标签 java class netbeans compiler-warnings

所以我得到- 警告:[options] bootstrap class path not set with -source 1.6

我要问 3 个关于它的问题。我知道我需要设置引导类路径,但我不确定我是否理解。一个快速的 google 刚刚将我发送到引用 Oracle 页面的页面,但我阅读了 Oracle 页面,并没有觉得我理解得特别好。

我目前正在 Netbeans 上运行此代码,所以我只需点击播放按钮即可编译和运行。是否有一个属性指示它将如何编译,以便我可以添加到引导类路径中?

另外,对于即将到来的可能性,我将只在 Netbeans 上运行它并从命令行运行它,在那里使用引导类路径进行编译的正确方法是什么?他们说 $ 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 个功能,为什么还要使用 7。
  • 忽略警告并具有良好的测试覆盖率,以确保您不使用 Java 7 功能
    • 我不了解 NetBeans,但在 Eclipse 中,您也可以说您正在针对 JDK 6 进行编译,因此如果您使用 Java 7 功能,它实际上不会编译。
  • 更改业务需求并针对 Java 7 进行编译。

关于java - 未设置引导类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15882586/

相关文章:

java - dependencyManagement - 父 pom 中的导入和直接条目

java - JAVA中数组的值未经操作就改变了

html - 在 CLASS 或 ID 之前提及 HTML TAG 元素(良好或不必要的 CSS 做法?)

python - 如何将类实例添加到列表中

java - 返回 int 数组时不使用变量 - NetBeans

java - 如何使用 Hibernate Lucene 搜索对挪威语字符(Æ、Ø 和 Å)进行不区分大小写的排序?

Java滑动JPanels

c++ - 初始化后的 vector at() 超出范围错误

java - 调试时强制异常

java.sql.SQLException : Parameter index out of range (1 > number of parameters, 这是 0) 错误