2011-02-07 2 views
1

내 응용 프로그램에 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 구현은 사용하지 않습니다. 아마도 클래스 로딩을 부모 우선으로 설정해야합니다. 그러면이 문제가 해결 될까요?

답변

2

자바 당신은 타사의 사본을 얻을 필요가

을 (자바 5.0 항아리는 자바 6에서 실행할 수 있습니다)하지만 전방 호환되지 않습니다 (자바 6 단지 자바 5.0에서 사용할 수 없습니다) 호환됩니다 Jar는 Java 5.0 용으로 컴파일되거나 Java 버전을 버전 6 이상으로 업그레이드합니다.

+0

그래서 Tomcat에서 내 애플리케이션을 실행하는 동안 동일한 Java6 클래스를 실행할 수 있었습니까? 그들은 동일한 Java JDK (1.5)를 사용하고 있습니다. 제 생각에는 JBoss 클래스 로딩 메커니즘과 관련이 있습니다. – Spiderman

+1

Java 6에서 jar를 컴파일하면 Java 5의 대상을 지정할 수 있지만 Java 5.0 JVM에서는 클래스 로더 작동 방식에 관계없이 Java 6 클래스. 즉 클래스 로더가 클래스를 트랜스 코딩하지 않으면 클래스 로더가 클래스를 트랜스 코딩하지 않고도 아무 것도 할 수 없습니다 (이 작업을 수행하는 클래스 로더는 알지 못합니다). 그렇게하는 것이 안전하지 않습니다. –

0

경우에 따라 HSG 학생이 사용하는 jdk를 수정하고 그 환경을 다시 구성하고이 예외가 계속 발생하는 것을 확인했습니다. 이것은 특히 jdk1.6에서 jdk1.5로 전환 한 경우 상당한 혼란을 야기 할 수 있습니다. 거의 항상, 범인은 jboss의 다른 버전이 실행 중이고 모든 들어오는 요청이 그들 중 하나에서 호출된다는 것입니다 (최신 항아리 포함). 우리는 항상 실행중인 앱을 확인하고 다른 모든 버전의 jboss를 종료/종료합니다.