Java 1.8 ASM ClassReader не смог проанализировать файл класса - возможно, из-за новой версии файла Java-класса, которая еще не поддерживается

Мое веб-приложение отлично работает на JDK 1.7, но выходит из строя на 1,8 со следующим исключением (при запуске сервера приложений с Jetty 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", от которой она зависит.

Как это разрешить?

Ответ 1

Как заявили @prunge и @Pablo Lozano, вам нужно Spring 4, если вы хотите скомпилировать код Java 8 (--target 1.8), но вы все равно можете запускать приложения на Java 8, скомпилированные на Java 7, если вы запускаете Spring 3.2.X.

Отъезд http://docs.spring.io/spring/docs/current/spring-framework-reference/html/new-in-4.0.html

Обратите внимание, что уровень байт-кода Java 8 (-target 1.8, как требуется в источнике-1.8) поддерживается только с Spring Framework 4.0. В частности, приложения на основе Spring 3.2 должны быть скомпилированы с максимальным количеством Java 7 в качестве целевой, даже если они будут развернуты в среду выполнения Java 8. Обновите приложение Spring 4 для приложений на основе Java 8.

Ответ 2

Если вы столкнулись с этой ошибкой, даже если вы скомпилируете с помощью -target 1.7, обратите внимание, что это связано с ошибкой в ​​ Spring Framework, которая заставляет ASM classreader загружать классы jdk (java. * или javax. *), которые, конечно, скомпилированы с -target 1.8.

Это, в сочетании со старой версией ASM в Spring 3.2.8 и ниже, которая не поддерживает разбор 1.8 файлов классов, также может привести к этой ошибке.

Более подробную информацию о проблеме можно найти здесь: https://jira.spring.io/browse/SPR-11719

Это должно быть исправлено в версии Spring Framework версии 3.2.9, которая должна быть выпущена в ближайшее время.

Конечно, обновление до Spring Framework 4 также решит проблему, так как она уже содержит более новую версию ASM.

Однако, если по какой-то причине вы не можете обновиться до версии 4, хорошо знать, есть ли альтернатива (скоро).

Ответ 3

если вы используете java 8 или следующую версию, вам необходимо обновить версию spring и spring версия должна быть 4.xxx

Ответ 4

Spring 4 обязателен для использования в java 8 для решения этой проблемы. Я просто протестировал его, и он работает.