0

Java バージョン 1.5 でクラスをコンパイルしました。

サーバーにデプロイすると、バージョンが正しくないというエラーが表示されました。

サーバーにバージョン1.5.0_06のJavaがある場合、Javaバージョン1.5.0_06でコンパイルすると違いがあります

1.バージョンの最後の数字も違いますか??

2. マイナーバージョンとメジャーバージョンを教えてくれますが、クラスがどのアップデートでコンパイルされているかを知る方法は??javap -verbose ClassName

ありがとう、サンディープ

4

3 に答える 3

1

JRE/JDK 1.5.0_06 は、Java 1.5 (曜日によっては Java 5) の実装です。

いいえ、違いはありません。Java 1.5 用にコンパイルされたクラスは、そのバージョンで問題なく動作するはずです。

クラスのバージョンでは、クラスがコンパイルされた JDK の更新はわかりません。また、その情報も関係ありません。

于 2011-06-14T09:38:19.533 に答える
0

1.バージョンの最後の数字も違いますか??

いいえ、そうすべきではありません。ただし、マイナーなバージョンの違いにより、実行時に問題が発生しました。さらに調査したところ、API の理解が不十分であることが原因であることがわかりました。obj.getClass().getFields()開発者は、宣言の順序でフィールドを返すことを期待していましたが、あるバージョンではそのように機能していました。新しい更新では、フィールドが異なる順序で返されていました。API は、「返された配列内の要素はソートされておらず、特定の順序でもありません」と明確に述べています。
話の教訓: 常にまったく同じバージョンの Java で開発、テスト、および展開します。

2.javap -verbose ClassName はマイナー バージョンとメジャー バージョンを教えてくれますが、クラスがどの更新プログラムでコンパイルされているかを知るにはどうすればよいですか??

それはいけません。クラスファイルにはその情報さえ含まれていません。クラスファイル形式を参照してください: http://en.wikipedia.org/wiki/Java_class_file

あなたが得ている問題は奇妙に見えます。ソリューションを取得した場合は、ソリューションを投稿してください。

于 2011-06-14T12:35:47.190 に答える
0

JDK 1.5 と JDK 1.5.0_06 の両方でクラス (任意のクラス) をコンパイルします。次に、1.5 でコンパイルされたバージョンと 1.5.0_06 でコンパイルされたバージョンのメジャー/マイナー バージョンを比較します。それらが同一であれば、Java 1.5.0_06 を使用するサーバー上で 1.5 でコンパイルされたクラスを問題なく実行できるはずです。そうでなければできません。

于 2011-06-14T10:23:11.293 に答える