警告:[オプション] -source 1.5と組み合わせて設定されていないブートストラップクラスパス


138

ビルド時に警告メッセージが表示されます!

警告:[オプション] -source 1.5と組み合わせて設定されていないブートストラップクラスパス

どうすれば修正できますか?



1
NetBeansフォーラム:forums.netbeans.org/topic43819.html
Alex K

mavenを使用している場合の解決策については、stackoverflow.com
questions / 9164625 /…

4
これにより、ソースとターゲットが7に設定されたMavenビルドでJava 8からString.joinを使用して頭痛がしました。maven-enforcer-pluginのrequireJavaVersionルールを使用し<version>[1.7.0,1.7.0-79]</version>て、少なくともビルドではなく明確なメッセージでビルドを中断する範囲を強制しました。あいまいなメッセージでテストします。
2015年

回答:


102

ブログ投稿から:

JDK Nのjavacを使用して古いバージョンのプラットフォームにクロスコンパイラするには、正しい方法は次のとおりです。

  • 古い-source設定を使用します。
  • 古いプラットフォームのrt.jar(または同等のもの)に対してコンパイルするようにbootclasspathを設定します。

2番目の手順を実行しない場合、javacは古いライブラリのルールを新しいライブラリと組み合わせて忠実に使用します。これにより、存在しないメソッドへの参照が含まれる可能性があるため、古いプラットフォームではクラスファイルが機能しなくなる可能性があります。


11
すばらしいですが、古いJDKを使用してコンパイルする方が簡単なようです。
dhardy 14

42

ブートクラスパスの使用法

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でテスト済み。


4

私は現在、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)すると、同様の警告が表示されました。 -source 1.7と組み合わせて。

解決策は、Linux Mint JDK1.7プラットフォームをNetbeansプラットフォームリストに追加することでした。

これを行うには、myProject> Properties> Librariesに移動し、Manage Platforms ...ボタンをクリックします。次に、Javaプラットフォームマネージャーウィンドウで、[プラットフォームの追加...]をクリックして、[Java Standard Edition]をクリックし、[次へ]をクリックして、/ usr / lib / jvm / java-7-openjdk-amd64(またはJDK 1.7バージョンの場所を問わず)を参照します。 )。プラットフォーム名はJDK1.7に設定されます。[完了]をクリックするだけで完了です。

これで、プロジェクトプロパティでJavaプラットフォームを選択できます。JDK1.7を選択してClean and Buildを実行すると、警告は表示されなくなります。:-)


1
"myProject> Properties> Source / Binary Format:JDK 7"が機能しました
Doctor Parameter

2

警告は、-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:...を使用して警告名を無効にすることができます。

optionsコマンドラインオプションの使用に関する問題について警告します。この種の警告の例については、クロスコンパイルの例を参照してください。


38
このように警告を遮断するのは良い考えではないことに注意してください
Alexander Malakhov

9
同意しましたが、一部の警告を無効にするか、数百の警告を出力して、実際の警告が非表示になるようにする方がよい場合があります。
ネオン

3
誰かがこの警告を無視して問題が発生する最小限の例を示すことができますか?
Ciro Santilli郝海东冠状病六四事件法轮功

1
参照してください。上記のコメント
real_paul

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
これにより、約1時間苦労していた問題が修正されましたが、表示されませんでした。
ルテンド

-2
  1. JDKをダウンロード(警告が書かれたバージョン) ->インストール

  2. プロジェクトを右クリック->プロパティ->ライブラリ-> Javaプラットフォーム(インストール済みのJDKを追加) -> OK

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.