web-dev-qa-db-ja.com

bootstrapクラスパスが設定されていません

だから私は-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ソース、つまり古いメソッドを参照しています。それがいつどのようにして起こったかはわかりません。

27
Stephopolis

クロスコンパイルを行っています。 JDK 6のクラスをコンパイルするためにJDK 7コンパイラーを使用しています。これは問題ありませんが、コンパイラーがJDK 6 rt.jarを手に入れようとする問題を回避します。その背後にある理由は、古い言語ルール(この場合は1.6)を使用している可能性があるため、実際にはJDK 6で機能しないクラスを生成する可能性があるが、新しいbootstrapクラスです。たとえば、一部のメソッドは古いJDKに存在しない場合があるため、コンパイルは完了しますが、プログラムを実行すると、MethodNotFoundExceptionで爆破する可能性があります。

いくつかの解決策、あなたはただ一つを選ぶことができます

  • JDK 6からrt.jarを指定します。なぜ古いコンパイラも使用しないのですか?
  • JDK 6コンパイラを使用します(rt.jarが含まれています)。 7つの機能が必要ない場合は、なぜ7を使用するのか。
  • 警告を無視し、適切なテスト範囲を確保して、Java 7つの機能を使用しないようにしてください。
    • NetBeansについては知りませんが、EclipseではJDK 6に対してコンパイルしていると言うこともできるため、Java 7の機能を使用すると、実際にはコンパイルされません。
  • ビジネスニーズを変更し、Java 7。
41
toomasr

bootstrapクラスパスを設定する必要があることを理解していますが、方法を理解できていません。

Netbeans 8.0.2では、次の場所に移動します。

Run > Set Project Configuration > Customise...

[カテゴリ]ウィンドウで、次の場所に移動します。

Build > Compiling

下部のフィールドは「追加のコンパイラオプション」で、ここに追加できます。

-bootclasspath /your/path/to/lower/Java/version/lib/rt.jar
1
MT0

MacOSのコンソールで同じ警告がコンパイルされていました。ここに追加されるコンパイラオプションは

-bootclasspath /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar

MacOSでは、Javaバージョン<= 1.6(Appleによってリリースされたもの)の場合)rt.jarclasses.jarと呼ばれることに注意してください。

1
nhaggen

プロジェクトプロパティを右クリックし、バインディングに移動して、NetBeansプロジェクトの機能を使用しているJDK 1.7を選択します。これが、問題が発生する理由です。これは問題の解決に役立ち、私にとってはうまくいきました。

1
user1818827