- ベストアンサー
jdkとjreの互換性について
PCのWebブラウザからJAVAアプレットを使用しています。 jdk1.4でコンパイルしていたソースをjdk1.5でコンパイルしてjre1.4で使用したところ、 ランタイムエラーが表示されてしまいました。 jdk1.5でコンパイルした実行ファイルをjre1.4とjre1.5の両方で使用することは可能なのでしょうか? 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#49664
回答No.2
JDK 1.5でコンパイルする際、「java -target 1.4 ××.java」というようにクロスコンパイルオプションを指定してみてください。これで1.4のバイナリ互換としてコンパイルされますので、ソースに問題がなければ1.4~1.5で動作するはずです。確認してみてください。 JDK 1.5は、それ以前と互換性の面でかなりいろいろとあるようです。それ以前のバージョンのJREでの動作を考えている場合は注意した方がいいようですね。
その他の回答 (1)
- keroro001
- ベストアンサー率23% (71/304)
回答No.1
基本的に上位互換なので、1.4でコンパイルして1.5jreでは動くかもしれませんが、その逆はあまりオススメできません。 また、1.5は0.1しか上がってないのでマイナーバージョンアップのように見えるかもしれませんが、別名J2SE 5.0と呼ばれ、メジャーバージョンアップ級の仕様変更が入ったようなので、そこら辺も影響しているのかもしれません。 一度仕様変更点など調べてみては?
質問者
お礼
回答して頂き、ありがとうございます。 確かに1.5に変更したことで過去に色々と影響がありました。 仕様についてもできるだけ調べてみようと思います。
お礼
その後自分で調べてみたのですが、 コンパイルオプションに-sourceを加えて 「javac -source 1.4 -target 1.4 xxx.java」 としたところ、jre1.4とjre1.5の両方で動くようになりました。 ご協力頂き、誠にありがとうございました。 失礼します。
補足
回答して頂き、ありがとうございます。 クロスコンパイルを試してみた結果、 「ターゲットリリース 1.4 がデフォルトのソースリリース 1.5 と競合しています。」 と表示されてしまいました。 コンパイルしたソースは普通にコンパイルする分にはjdk1.4でもjdk1.5でも問題は有りませんでした。 「ソースリリース」というのは何に依存するものなのでしょうか? 宜しくお願いします。