Nice programing

Java 1.8 ASM ClassReader가 클래스 파일을 구문 분석하지 못했습니다. 아직 지원되지 않는 새 Java 클래스 파일 버전 때문일 수 있습니다.

nicepro 2020. 10. 11. 11:22
반응형

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

나는 그것이 의존하는 스프링과 "asm.jar"라이브러리 때문에 문제가 발생한다고 가정한다.

이 문제를 어떻게 해결합니까?


@prunge 및 @Pablo Lozano가 언급했듯이 코드를 Java 8 (-target 1.8)로 컴파일하려면 Spring 4가 필요하지만 Spring 3.2.X에서 실행하는 경우 Java 7로 컴파일 된 Java 8에서 앱을 실행할 수 있습니다.

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 클래스 파일의 구문 분석을 지원하지 않는 스프링 3.2.8 이하의 이전 ASM 버전과 결합되어이 오류가 발생할 수도 있습니다.

문제에 대한 자세한 정보는 https://jira.spring.io/browse/SPR-11719 에서 찾을 수 있습니다.

이는 곧 출시 될 Spring Framework 버전 3.2.9에서 수정되어야합니다.

물론 Spring Framework 4로 업그레이드하면 ASM의 최신 버전이 이미 포함되어 있으므로 문제가 해결됩니다.

그러나 어떤 이유로 아직 버전 4로 업그레이드 할 수없는 경우 대안이 있음을 아는 것이 좋습니다 (곧).


Java 8 또는 다음 버전을 사용하는 경우 스프링 버전을 업그레이드해야하며 스프링 버전은 4.xxx 여야합니다.


나는 같은 문제가 있었고 그것을 해결했습니다. Java 8과 함께 spring 3.x를 사용하고 있습니다. 위의 솔루션이 작동하지 않으면 jar를 변경하고 해당 jar가 사용중인 Java 버전과 호환되는지 여부를 검색합니다. 스프링 3.x는 Java 8과 호환되지 않습니다.


이 문제를 해결하기 위해 Java 8에 Spring 4를 사용할 수 있습니다. 방금 테스트했고 작동합니다. 이 문제는 3.2.9-RELEASE 이후 수정되었습니다.

참고 URL : https://stackoverflow.com/questions/22526695/java-1-8-asm-classreader-failed-to-parse-class-file-probably-due-to-a-new-java

반응형