this pageの情報は、良いヒントと一般的な情報を提供しますが、決定的なものはありません。javacはJava APIクラスをどのように見つけますか?
javac.exeは基本的に、Javaを使用して 'tools.jar'から 'sun.tools.javac.Main'を起動するだけです。また、Java APIクラスはJDKの下の 'jre/lib'の 'rt.jar'に格納されていることも知っています。これは 'javac.exe'がJava APIクラスをロードする場所ですか?
私はこのシナリオについて特に疑問に思っています:jdk1.6.0_17をインストールし、後でjdk1.6.0_25をインストールしたとします。 jdk1.6.0_17から 'javac.exe'を実行すると、1.6.0_17または1.6.0_25に 'rt.jar'のJava APIクラスがロードされますか?
私がこのすべてを知りたい理由は、私がコンパイルしているコードが特定の(最新ではない)バージョンのJavaで動作することを知っている状況です。コンパイルしたいjavacとJava APIの正確なバージョンを使用して互換性を保証します。
を使用したい場合は、別のビルドシナリオを設定するには、あなたのIDEでの可能性がないCross Compilation - >例えば:
はでより多くを参照してください。 2つの異なるJDKバージョンを使用して、2つの異なるビルド設定を構成しますか?私はNetBeansでこれを使用していますが、Eclipseでも提供されている機能だと思います。 JAVA_HOMEを変更すると動作しますが、頻繁に行う必要がある場合は迷惑になります。 – hovanessyan