2009-10-06 7 views
9

...サポートされていないメジャー。マイナーバージョン私は、私は自分のアプリケーションにログインするたびに、次の例外を取得しています49.0

javax.servlet.ServletException: COM /日/組織/ apacheの/のXalan /内部/ XSLTC/TRAX/TransformerFactoryImpl (サポートされていないメジャー。マイナーバージョン49.0)

この平均を行い、どのように私はこの問題を解決することができますか?

答えて

14

.classを実行するために使用しているJVMと、.classをコンパイルするために使用されたJavaのバージョンとの間に不一致があります。それを実行するJVMは、そのクラスをコンパイルするために使用されたJVMの以前のバージョンです。

hereの詳細については、以前のJVMで実行しようとしているバージョン1.5のクラスがあります。

EDIT:WAS 5.1は、JDK 1.4,it would appearを使用します。

+0

私はWAS 5.1を使用しています。ローカルシステムにインストールされているJREはJRE 1.5.0_06 – Gourav

+0

です。 – Gourav

+0

@Gourav: 'java -version'を実行すると何が言いますか? – Powerlord

2

1.4以前のJVMで実行しようとしているJava 5機能でコンパイルされたコードがいくつかあります。 JAVA_HOME変数が1.5以降のJDKを指していることを確認してください。

更新:あなたのコメントでは、WAS 5.1を使用していると言います。 WAS 5.1はJava 5をサポートしていません.WAS 6.1を使用してJava 5を使用する必要があります(参考のために...)

1

JDKの上位バージョンでマイナーJavaのバージョンは、javacコンパイラの-sourceおよび-targetスイッチを使用します。一部の顧客にはマイナーバージョンのJavaが必要です。 1.6で開発中です。 -sourceと-targetはこのszenarioに対して救済策です。あなたは、Alex Buckleyのバイトコードとソースコードのバージョニングの問題について、非常に良いpaperを読むかもしれません。

しかし、TransformerFactoryImplはSunの内部クラスであるため、コンテナ固有のJAVA_HOMEを確認してください。

+0

残念ながら、javacは、-targetよりも上位のveruionに設定された-sourceを使用することを拒否し、いずれの場合でも古いJREにはまだ存在しないAPIライブラリの部分を使用することには役立ちません。 –

7

あなたのコードは、Java 1.5でコンパイルされ、あなたは、Java 1.4(またはそれ以下)でそれを実行しようとしていた

ソリューションは

a) Run it with Java1.5 (perhaps using WAS 6+) 
b) Recompile it with Java 1.4 

または

c) Recompile it with Java.15 but specifying the -target flag (javac -target 1.4 ....) 

である点は、 1.4 vmで1.5バイトコードを実行しようとしています

0

sudo update-alternativesを使用する--config java使用したいバージョンを設定してください。

1

これは、別のJDKバージョンを使用しているマシンでコードをコンパイルしたときに発生します。 これらの異なるボックスで同じJDKバージョンを使用していることを確認してください。

関連する問題