だから私は-warning: [options] bootstrap class path not set in conjunction with -source 1.6
そして、これについて3つの質問をします。 bootstrapクラスパスを設定する必要があることを理解していますが、方法がわかりません。簡単なgoogleがOracleページから引用したページに私を送信しましたが、Oracleページを読みました私がそれを特によく理解しているとは感じませんでした。
現在このコードをNetbeansで実行しているので、再生ボタンを押してコンパイルして実行するだけです。 bootstrapクラスパスに追加できるように、これをどのようにコンパイルするかを指示するプロパティはありますか?
また、Netbeansでのみ実行してコマンドラインから実行するという今後の事態に備えて、bootstrapクラスパスを使用してコンパイルする正しい方法は何ですか?$ javac -source 6 HelloWorld.Java
しかし、単に-source 1.6
本当に解決策になりますか?
おそらくさらに大きな疑問ですが、今後この種の警告を回避するにはどうすればよいですか?少しでも理解できれば、古いJavaソース、つまり古いメソッドを参照しています。それがいつどのようにして起こったかはわかりません。
クロスコンパイルを行っています。 JDK 6のクラスをコンパイルするためにJDK 7コンパイラーを使用しています。これは問題ありませんが、コンパイラーがJDK 6 rt.jar
を手に入れようとする問題を回避します。その背後にある理由は、古い言語ルール(この場合は1.6)を使用している可能性があるため、実際にはJDK 6で機能しないクラスを生成する可能性があるが、新しいbootstrapクラスです。たとえば、一部のメソッドは古いJDKに存在しない場合があるため、コンパイルは完了しますが、プログラムを実行すると、MethodNotFoundException
で爆破する可能性があります。
いくつかの解決策、あなたはただ一つを選ぶことができます
rt.jar
を指定します。なぜ古いコンパイラも使用しないのですか?rt.jar
が含まれています)。 7つの機能が必要ない場合は、なぜ7を使用するのか。bootstrapクラスパスを設定する必要があることを理解していますが、方法を理解できていません。
Netbeans 8.0.2では、次の場所に移動します。
Run > Set Project Configuration > Customise...
[カテゴリ]ウィンドウで、次の場所に移動します。
Build > Compiling
下部のフィールドは「追加のコンパイラオプション」で、ここに追加できます。
-bootclasspath /your/path/to/lower/Java/version/lib/rt.jar
MacOSのコンソールで同じ警告がコンパイルされていました。ここに追加されるコンパイラオプションは
-bootclasspath /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar
MacOSでは、Javaバージョン<= 1.6(Appleによってリリースされたもの)の場合)rt.jar
はclasses.jar
と呼ばれることに注意してください。
プロジェクトプロパティを右クリックし、バインディングに移動して、NetBeansプロジェクトの機能を使用しているJDK 1.7を選択します。これが、問題が発生する理由です。これは問題の解決に役立ち、私にとってはうまくいきました。