제 개발 팀은 최근에 서버에 대한 전체 액세스 권한이없는 원격 개발 환경으로 이동했습니다. 변경 전에 JRE 7과 함께 Java 1.7 x64에서 잘 실행되는 JAR이있었습니다. 새 서버로 이동했을 때 JAR이 제대로 실행되고 있었지만 서버 관리자 중 한 명이 Java를 이전 버전으로 "업데이트"했습니다. 우리가 사용하고 있던 버전을 제거했습니다. 이유는 묻지 마세요. Java 1.7을 다시 설치하고 JRE와 함께 1.6을 제거했습니다.
런타임시 다음 문제가 발생하며 빌드 오류가 없습니다.
Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'
has value '1.7', but '1.6' is required.
Error: could not find java.dll
Error: could not find Java SE Runtime Environment.
문제없이 랩톱에서 동일한 JAR을 실행했습니다. 서버와 랩톱 모두 각각의 % HOME % 변수 및 시스템 PATH에 JDK 1.7 및 JRE 7이 있습니다. JRE 6을 다시 설치하고 나중에 동일한 결과로 시스템 환경 PATH 변수에 배치했습니다.
또한 레지스트리를 다시 1.6으로 변경했으며 결과는 다음과 같습니다. 여러 Java가 설치되어있는 것 같습니다 (원래 문제로 돌아 감).
Exception in thread "main" java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0
다양한 포럼을 살펴 보았지만 내 문제가 정확히없는 것 같기 때문에 여러분 모두가 가진 통찰력에 감사드립니다. 또한 이것은 우리가 사용하는 다른 서버에서도 발생했습니다. 감사!
업데이트 : JAR을 1.6 또는 1.7로 다시 컴파일하고 JDK와 일치하는 것은 운이 없습니다. 또한 왜 새로운 버전의 Java가 이전의 컴파일 된 버전을 깨뜨릴까요?