私のWebアプリケーションはJDK 1.7では正常に動作しますが、Jetty 8でのアプリケーションサーバーの起動中に、次の例外で1.8でクラッシュします。 Springバージョン3.2.5.RELEASEを使用しています。
org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet
この問題は、springとそれが依存する「asm.jar」ライブラリが原因で発生すると想定しています。
どうすれば解決できますか?
@prungeと@Pablo Lozanoが述べたように、コードをJava 8(--target 1.8)にコンパイルする場合はSpring 4が必要ですが、Java 8コンパイル済みでアプリを実行できますSpring 3.2.Xで実行する場合はJava 7に。
チェックアウト http://docs.spring.io/spring/docs/current/spring-framework-reference/html/new-in-4.0.html
Java 8バイトコードレベル(-source 1.8で必要な-target 1.8)は、Spring Framework 4.0以降でのみ完全にサポートされることに注意してください。特に、Spring 3.2ベースのアプリケーションは、Java 8ランタイムにデプロイされた場合でも、ターゲットとして最大Java 7でコンパイルする必要があります。 Java 8ベースのアプリケーションの場合は、Spring 4にアップグレードしてください。
-target 1.7でコンパイルしてもこのエラーが発生する場合、これは、ASMクラスリーダーがjdkクラス(Java。*またはjavax。*)をロードするSpring Frameworkのバグが原因であることに注意してください。 -target 1.8でコンパイルされました。
これは、1.8クラスファイルの解析をサポートしていないSpring 3.2.8以前の古いASMバージョンと組み合わせて、このエラーにつながる可能性があります。
この問題の詳細については、こちらをご覧ください: https://jira.spring.io/browse/SPR-11719
これは、まもなくリリースされるSpring Frameworkバージョン3.2.9で修正される予定です。
もちろん、Spring Framework 4にアップグレードすると、ASMの新しいバージョンが既に含まれているため、この問題も解決されます。
ただし、何らかの理由でまだバージョン4にアップグレードできない場合は、別の方法(すぐに)があることを知っておくと便利です。
私も同じ問題を抱えて解決しました。 Spring 3.xでJava 8.を使用しています。上記のソリューションが機能しない場合は、jarを変更し、使用しているJavaバージョンと互換性があるかどうかを検索します。 spring 3.xはJava 8と互換性がありません。
Java 8または次のバージョンを使用する場合、Springバージョンをアップグレードする必要があり、Springバージョンは4.xxxである必要があります