2012-12-31 5 views
0

서블릿을 JDK 7으로 컴파일했습니다. 서블릿 컨테이너로 Tomcat을 사용합니다. 그러나 이전 버전의 JVM 1.6을 사용합니다.지원되지 않는 major.minor 버전 변경할 대상은 무엇입니까?

지금은 Unsupported major.minor version의 오류가 있습니다.

어느 것을 변경해야합니까?

  • 톰캣의 JVM

또는

  • 내 맥의 JDK? 한 파일의 cmd-line을 사용하여 컴파일 할 때만 JDK를 변경하는 방법은 무엇입니까?

답변

1

두 가지 방법 중 하나를 사용할 수 있습니다. tomcat JAVA_HOME을 변경하는 것은 코드 재 컴파일이 필요 없기 때문에 간단합니다 (Tomcat이 Java 6과 호환된다고 가정).

tomcat .bat 파일의 JAVA_HOM E를 컴퓨터의 Java 6 위치로 간단하게 지정할 수 있습니다.

2

Tomcat 용 Java 버전은 Tomcat이 지원하는 버전이어야합니다. 문서를 확인하거나 제대로 작동하는 문서 만 사용하십시오.

컴파일 할 때 사용하는 버전은 최소한 동일한 major.minor 번호와 동일한 버전이어야합니다.

Tomcat을 실행하고 개발, 테스트 및 빌드 및 유닛 테스트를 실행하는 데 정확히 동일한 버전을 사용해야합니다. 모든 것을 더 쉽게 만들고 시간을 낭비하는 미묘한 버그를 제거합니다.

+0

ANT를 사용하여 .class 파일을 만드는 경우, 일치하는 JDK를 사용하여 빌드를 수행하는 것 외에도'javac' 태스크에서'target' 속성을 설정하는 것이 좋습니다. 그렇게하면 사용중인 JDK와 상관없이 항상 원하는 JRE와 호환되는 클래스를 얻을 수 있습니다. –

+1

Maven 빌드와 비슷한 점이 있습니다. 'maven-compiler-plugin'에 대해'source'와'target' 설정으로 자바 버전을 설정해야합니다. –

0

Java 1.6으로 다시 컴파일하면 문제가 해결됩니다.

0

두 가지 옵션 중에서 Tomcat을 실행하는 JVM을 다운 그레이드하는 것이 더 쉽습니다 (또는 Mac OS가 여러 개의 병렬 JVM 설치를 허용하기 때문에 다른 것을 선택하는 것이 더 쉽습니다).

"-target 1.6"으로 코드를 다시 컴파일하면 Java 1.6 가상 시스템에서 실행할 수있는 파일 .class을 컴파일 할 수 있습니다. 이것은 더 나은 솔루션 인 IMO입니다. 왜냐하면 이후 빌드가 1.6 JVM에서도 수용 가능할 것이기 때문입니다.

관련 문제