내 응용 프로그램에 Java6에서 컴파일 된 타사 jar (com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar) 이 포함되어 있습니다. 나는 Java5를 실행 톰캣 5.5을 사용하여 관리하지만 보스 5.1에서 동일한 응용 프로그램을 배포하려고 할 때 - 나는 오류 얻을 :
JBoss 5.1에서만 발생하는 UnsupportedClassVersionError
[org.jboss.detailed.classloader.ClassLoaderManager] (main) Unexpected error during load of:testdata.SomeAnnotation java.lang.UnsupportedClassVersionError: Bad version number in .class file
나는 그 날에뿐만 아니라 발생 깨달았다. as described here.
내 질문 :
1) 이유는 바람둥이 같은 웹 서버에서이 병을 사용하는 것이 가능하지만 여전히 제이 보스 5.1 귀찮게?
2) 왜 Jboss 클래스 로더는 응용 프로그램의 구현자를 Jweaver로로드하여 프레임 워크를로드하는 데 사용되며 Jboss aspectJ 구현은 사용하지 않습니다. 아마도 클래스 로딩을 부모 우선으로 설정해야합니다. 그러면이 문제가 해결 될까요?
그래서 Tomcat에서 내 애플리케이션을 실행하는 동안 동일한 Java6 클래스를 실행할 수 있었습니까? 그들은 동일한 Java JDK (1.5)를 사용하고 있습니다. 제 생각에는 JBoss 클래스 로딩 메커니즘과 관련이 있습니다. – Spiderman
Java 6에서 jar를 컴파일하면 Java 5의 대상을 지정할 수 있지만 Java 5.0 JVM에서는 클래스 로더 작동 방식에 관계없이 Java 6 클래스. 즉 클래스 로더가 클래스를 트랜스 코딩하지 않으면 클래스 로더가 클래스를 트랜스 코딩하지 않고도 아무 것도 할 수 없습니다 (이 작업을 수행하는 클래스 로더는 알지 못합니다). 그렇게하는 것이 안전하지 않습니다. –