web-dev-qa-db-ja.com

コンパイル中の例外:間違ったバージョン50.0、49.0である必要があります

JXL APIを使用してアプリケーションを動作させていますが、Eclipse IDEを使用してコンパイルしようとすると正常に動作しますが、コマンドプロンプトでコンパイルしようとしても以下の例外が表示されるとコンパイルできません。

Extract.Java:6: cannot access jxl.read.biff.BiffException bad class file: C:\Program Files\Java\jdk1.5.0_01\jre\lib\ext\jxl.jar(jxl/read/biff/BiffException.class)
class file has wrong version 50.0, should be 49.0
Please remove or make sure it appears in the correct subdirectory of the classpa
th.
import jxl.read.biff.BiffException;
                     ^
1 error

編集:

JDK 1.6を使用して実行できます。 JDK 1.6は下位バージョンとも互換性がある必要があるため、JDK 1.5でコンパイルされたクラスファイルをサポートしないのはなぜですか。

39
i2ijeya

使用しているライブラリはJava 6でコンパイルされました

コンパイラはJava 5であるため、この形式を理解しません。

これを修正するには、1.5バージョンのライブラリを入手するか、コンパイラを1.6にアップグレードする必要があります。

70
OscarRyz

http://www.jnode.org/node/214 ...

2007年11月30日-07:15、金曜日にStephen Crawleyによって提出されました。

異なるバージョンのJavaでコンパイルされたコードを混合していると思われます。クラスファイルバージョン50.0はJava 6.0で使用され、49.0はJava 5.0で使用されます。

「ビルドクリーン」を実行して、既存のすべてのクラスファイルを削除してから、通常のビルドを実行してください。

JNodeはJava 6.0のみを使用して開発されています。前回試したとき、Java 5.0(別名1.5)を使用してビルドしませんでした。 JNodeブートイメージをビルドするプログラムで)

Eclipseでビルダーを変更してみてください。 3.4を使用している場合、Project-Properties-Java Compiler-Enable Project Specific Settings-Compiler Compliance Level = 1.6。また、JRE 1.6もインストールする必要があります。

3
atk

Eclipseでクラスパスを確認し、コマンドプロンプトでコンパイルするのと同じクラスパスであることを確認し、ライブラリのインポートも確認してください

1
JERiv

つまり、Java 6でクラスをコンパイルし、Java 5で実行しようとしています。

解決策:

antを使用している場合、プロジェクトのルートディレクトリで以下の手順を実行します

  1. アリクリーン
  2. 蟻が展開する

Eclipseを使用している場合、ワークスペースをクリーンアップし(Java6でコンパイルされたクラスファイルを削除)、再度ビルドします

これは、あなたの中でIDE JDKの最新バージョンを指しているが、IDEの外でプログラムをビルドするとき(おそらくmavenを使用)、Java_homeはIDEの古いバージョンです。

0
Luthoz