警告:[选项]引导程序类路径未与-source 1.5一起设置


138

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

警告:[选项]引导程序类路径未与-source 1.5一起设置

我该如何解决?




看到stackoverflow.com/questions/9164625/...对案件的解决方案使用的是行家
hoijui

4
这使我在Maven构建与源和目标设置使用的string.join从Java 8头痛7.我使用的Maven的实施者-插件的requireJavaVersion规则执行范围<version>[1.7.0,1.7.0-79]</version>至少休息构建有一个明确的信息,而不是用模糊的消息进行测试。
Earcam

Answers:


102

博客文章

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

  • 使用旧的-source设置。
  • 设置bootclasspath以针对rt.jar(或更旧的平台)进行编译。

如果不采取第二步,javac将忠实地使用旧语言规则和新库,这会导致类文件在旧平台上不起作用,因为可以包含对不存在的方法的引用。


11
很好,尽管使用旧的JDK进行编译似乎更容易。
dhardy 2014年

42

bootclasspath用法

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

在Ubuntu 14.04上针对Oracle Java 7和8进行了测试。


4

我目前正在具有Java -version = 1.7.0_65的Linux Mint 17.1上运行带有JDK 1.8的Netbeans IDE 8.0.2。为了能够运行JAR文件,我必须设置myProject> Properties> Source / Binary格式:JDK7。但是,在构建(myProject> Clean and Build)时,我得到了类似的警告:警告:未设置[options] bootstrap类路径结合-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:不再发出警告。:-)


1
“ myProject> Properties>源/二进制格式:JDK 7”为我工作
医生参数

2

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

$ 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:...选项禁用警告名称。

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


38
请注意,仅关闭这样的警告不是一个好主意
Alexander Malakhov

9
同意,但是有时最好禁用一些警告,而不要输出数百个警告,这样才能隐藏真正的警告。
2013年

3
有人可以通过忽略此警告来给出发生问题的最小示例吗?
西罗Santilli郝海东冠状病六四事件法轮功


2

确保您的jdk版本和Java编译器源版本相同。例如,如果您使用的是maven,并且已使用JDK 9设置了项目,则遵循pom片段将通过上述警告

            <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>

1
这解决了我一个小时苦苦挣扎的问题,我只是看不到它。
Rutendo

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.