【问题标题】:warning: [options] bootstrap class path not set in conjunction with -source 1.5警告:[options] 引导类路径未与 -source 1.5 一起设置
【发布时间】:2011-12-10 14:42:45
【问题描述】:

我在构建时收到警告消息!

警告:[options] 引导类路径未与 -source 1.5

我该如何解决?

【问题讨论】:

标签: java


【解决方案1】:

来自blog post

要使用JDK N中的javac来交叉编译到旧平台版本,正确的做法是:

  • 使用旧的 -source 设置。
  • 将引导类路径设置为针对旧平台的 rt.jar(或等效文件)进行编译。

如果不采取第二步,javac 将尽职尽责地使用旧语言规则与新库相结合,这可能导致类文件在旧平台上不起作用,因为可能包含对不存在的方法的引用。

【讨论】:

  • 很好,虽然使用旧版 JDK 编译似乎更容易。
【解决方案2】:

引导类路径使用

javac -bootclasspath /usr/lib/jvm/java-7-oracle/jre/lib/rt.jar \
      -source 1.7 Main.java

在 UNIX 系统上,使用以下命令定位 rt.jar

locate -r '/rt.jar$'

设置JAVA_HOME,使rt.jar位于$JAVA_HOME/jre/lib/rt.jar,那么:

javac -source 1.7 -bootclasspath "$JAVA_HOME/jre/lib/rt.jar" Main.java

在适用于 Oracle Java 7 和 8 的 Ubuntu 14.04 上测试。

【讨论】:

    【解决方案3】:

    我目前在具有 java -version = 1.7.0_65 的 Linux Mint 17.1 上运行带有 JDK 1.8 的 Netbeans IDE 8.0.2。因此,为了能够运行 JAR 文件,我必须设置 myProject>Properties>Source/Binary Format:JDK 7。但是在构建时(myProject>Clean and Build)我收到了类似的警告:警告:[options] bootstrap class path not set与 -source 1.7 结合使用。

    解决方案是将 Linux Mint JDK1.7 平台添加到 Netbeans 平台列表中。

    这可以通过转到 myProject>Properties>Libraries 并单击 Manage Platforms... 按钮来完成。然后在 Java Platform Manager 窗口中单击 Add Platform... 并选择:Java Standard Edition,单击 Next 并浏览到 /usr/lib/jvm/java-7-openjdk-amd64(或 JDK 1.7 版本的任何位置) )。平台名称将设置为 JDK1.7。只需点击完成即可。

    您现在可以在项目属性中选择 Java 平台。通过选择 JDK1.7 并运行 Clean and Build: no more warnings。 :-)

    【讨论】:

    • "myProject>Properties>源/二进制格式:JDK 7" 为我工作
    • Windows + Netbeans 12 by(从 jdk 8 到 openjdk 11 的代码):@DoctorParameter 的解决方案对我有用。
    【解决方案4】:

    可以使用 -Xlint 系列中的新 JDK 7 子选项 -Xlint:-options 禁用该警告。例如

    $ javac -source 1.5 -Xlint:-options example.java

    来源:https://blogs.oracle.com/darcy/entry/bootclasspath_older_source

    http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html#xlintwarnings

    可以使用 -Xlint 选项启用或禁用的警告

    使用选项 -Xlint:name 启用警告名称,其中 name 是以下警告名称之一。同样,您可以使用选项 -Xlint:-name 禁用警告名称: ...

    选项 警告有关使用命令行选项的问题。有关此类警告的示例,请参见交叉编译示例。

    【讨论】:

    • 请注意,像这样关闭警告并不是一个好主意
    • 同意,但有时最好禁用一些警告而不是输出数百个警告,以便隐藏真正的警告。
    • 有人可以通过忽略此警告来举一个出错的最小示例吗?
    【解决方案5】:

    确保您的 jdk 版本和 java 编译器源版本相同。例如,如果您使用的是 maven,并且已经使用 JDK 9 设置了项目,那么跟随 pom sn-p 将通过上述警告

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        ...
                    </configuration>
                </plugin>
    

    将源/目标版本更正为 9 可修复如下警告

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                        <source>9</source>
                        <target>9</target>
                        ...
                    </configuration>
                </plugin>
    

    【讨论】:

    • 这解决了我挣扎了大约一个小时的问题,我只是看不到它。
    【解决方案6】:

    如果您在 Windows 上使用 Apache NetBeans IDE:

    1 - 检查选择了哪个 Java 版本:

    Menu Bar -> Tools -> Options -> Java -> Java Platform
    

    2 - 在以下位置选择相同的 Java 版本:

    Menu Bar -> Run -> Set Project Configuration -> Customize... -> Sources -> Source/Binary Format
    

    【讨论】:

      【解决方案7】:
      1. 下载 JDK (警告书面版本) -> 安装

      2. 右键单击您的项目 -> 属性 -> 库 -> Java 平台 (添加已安装的 JDK) -> 确定

      【讨论】:

        猜你喜欢
        • 2013-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多