Tomcat 7에서 지원되지 않는 클래스 버전 오류 발생

Tomcat 7에서 지원되지 않는 클래스 버전 오류 발생

JSP 사이트를 호스팅하기 위해 Tomcat 서버를 설정하고 있습니다. 모든 것이 제대로 작동하는지 확인하기 위해 Eclipse에서 테스트 애플리케이션을 만들었습니다. 그것이 하는 일은 JSP로 텍스트를 인쇄한 다음, 텍스트도 인쇄하는 사용자 정의 클래스에서 함수를 호출하는 것뿐입니다. 이것은 Eclipse(Tomcat과 동일한 컴퓨터에서 실행)에서 잘 실행됩니다. 프로그램을 WAR 파일로 컴파일하고 Tomcat에서 실행하려고 하면 예외가 발생합니다.

message javax.servlet.ServletException: java.lang.UnsupportedClassVersionError: jsp/test/TestClass : Unsupported major.minor version 51.0 (unable to load class jsp.test.TestClass)

description The server encountered an internal error that prevented it from fulfilling this request.

org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.UnsupportedClassVersionError: jsp/test/TestClass : Unsupported major.minor version 51.0 (unable to load class jsp.test.TestClass)
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
    ...

root cause

javax.servlet.ServletException: java.lang.UnsupportedClassVersionError: jsp/test/TestClass : Unsupported major.minor version 51.0 (unable to load class jsp.test.TestClass)
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:912)
    ...

root cause

java.lang.UnsupportedClassVersionError: jsp/test/TestClass : Unsupported major.minor version 51.0 (unable to load class jsp.test.TestClass)
    org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2899)
    ...

페이지를 새로 고치면 오류가 UnsupportedClassVersionError"major.minor" 항목으로 바뀌고 없어진다는 점을 지적해야 합니다. 거기에서 무슨 일이 일어나고 있는지 잘 모르겠습니다.

Google에서는 런타임이 컴파일러보다 오래된 버전이기 때문에 발생한다고 말했지만 제가 아는 한 Eclipse와 Tomcat은 모두 최신 버전을 사용하고 있습니다. 같은 컴퓨터에 있으므로 같은 JAVA_HOME 변수를 사용해야겠죠? 나는 다양한 JRE/JDK 설치를 가지고 있으며 그 중 몇 개를 JAVA_HOME으로 시도했지만 아무것도 변경되지 않은 것 같습니다(매번 Tomcat을 다시 시작합니다). 현재로서는 다음과 같습니다.

JAVA_HOME = C:\Program Files\Java\jdk1.7.0_25
Path = C:\Program Files\Java\jdk1.7.0_25\bin; ...

이 버전의 Java를 사용하려면 Tomcat에 대해 설정해야 할 다른 것이 있습니까? 아니면 JAVA_HOME을 가리켜야 하는 다른 위치가 있습니까? 여러 JRE 설치도 시도했지만 아무 것도 나오지 않았습니다. 이것에 대한 아이디어가 있습니까?

이 모든 작업은 Windows Server 2008 R2에서 Tomcat 7을 사용하여 수행됩니다.

미리 감사드립니다.

더그

답변1

Eclipse에서 프로젝트 기본 설정으로 이동하고 Java 컴파일러 설정으로 이동합니다.

이것은컴파일러 준수 수준?

Java 7이 설치된 Tomcat 7에서 이를 실행하는 경우 규정 준수 수준을 다음으로 설정해야 합니다.1.7. 그렇지 않은 경우 문제가 될 수 있습니다. <=인 한 괜찮을 것입니다.1.7, Java 8의 스냅샷에 대해 Eclipse를 구성하지 않았을 가능성이 있습니까?

어느 쪽이든 이 값을 알면 문제를 파악하는 데 도움이 될 수 있습니다.

답변2

UnsupportedClassVersionError한 버전(한 버전을 대상으로 함)을 "사용"하여 컴파일하고 이전 Java 버전으로 실행할 때 항상 나타납니다.

JAVA_HOMEjava.exe 파일을 찾아야 하는 위치를 운영 체제에 알려주지 않습니다. 운영 체제는 PATH 변수에서 해당 파일을 가져옵니다. 그렇기 때문에 변수 시작 부분에 PATHpath 를 추가하는 것이 좋습니다 JAVA_HOME/bin.

그렇지 않은 경우 스택 추적(나머지 오류 메시지)이 유용할 수 있습니다. 특히 "지원되지 않는 major.minor" 또는 이와 유사한 것과 숫자.

추가 정보.

답변3

Eclipse(WTP)를 통해 Tomcat에 코드를 어떻게 배포하고 있습니까? 아니면 특정 빌드 도구를 사용하여 WAR을 구축하고 이를 로컬 Tomcat에 수동으로 배포하고 있습니까?

관련 정보