program story

레지스트리 키 '…'의 값은 '1.7'이지만 '1.6'이 필요합니다.

inputbox 2020. 8. 26. 07:49
반응형

레지스트리 키 '…'의 값은 '1.7'이지만 '1.6'이 필요합니다. Java 1.7이 설치되고 레지스트리가이를 가리킴


제 개발 팀은 최근에 서버에 대한 전체 액세스 권한이없는 원격 개발 환경으로 넘어갔습니다. 변경하기 전에 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가 이전의 컴파일 된 버전을 깨뜨릴까요?


이것은 자바 자체를 혼란스럽게 만들 때 발생합니다. JRE 7을 찾은 Java 6 VM을 실행하려고합니다. 명령 줄을 입력 java하거나 java -version잘못 구성된 환경에서 입력하더라도이 문제가 표시 될 수 있습니다. JAR의 코드가 Windows 레지스트리에서 해당 항목을 찾는 경우를 제외하고는 JAR이 문제가 아닙니다 (아마도 귀하의 경우가 아님).

제 경우 에는 폴더 java.exe, javaw.exejavaws.exeJava 6이 있습니다 Windows/System32(어떻게 있어야하는지 모르겠습니다). 나머지 JDK 및 JRE는 C:\Java\jdk_1.7.0\bin. 이런!


Java 7을 이미 실행중인 시스템에 Java 8 (jdk 및 jre)을 설치할 때 비슷한 오류가 발생했습니다.

오류 : 레지스트리 키 'Software \ JavaSoft \ Java Runtime

Environment '\ CurrentVersion'의 값은 '1.8'이지만 '1.7'이 필요합니다.

오류 : java.dll을 찾을 수 없습니다. 오류 : Java SE 런타임 환경을 찾을 수 없습니다.

내 환경이 올바르게 설정되었지만 (Path 및 java_home이 올바르게 정의 됨) 문제는 8 개 이전 Java 설치 프로그램이 작동하는 방식에서 발생합니다. 즉, 세 개의 실행 파일 (java.exe, javaw.exe 및 javaws.exe)을 복사하는 데 사용되었습니다. )를 Windows 시스템 디렉토리에 추가합니다. 새로운 pre-8 설치로 덮어 쓰지 않는 한 유지됩니다.

그러나 Java 8 설치 프로그램은 대신 새 디렉토리 인 C : \ ProgramData \ Oracle \ Java \ javapath에 실제 JRE 8 위치를 가리키는 심볼릭 링크를 만듭니다.

이것은 실제로 이전 7 개의 exe를 실행하지만 새로운 8 개의 DLL을 사용한다는 것을 의미합니다.

따라서 해결책은 위와 같이 Windows 시스템 디렉토리에서 3 개의 Java exe를 삭제하는 것입니다.

64 비트 Windows에서 32 비트 Java를 실행하는 경우 exe는 Windows \ SysWOW64에 있고 그렇지 않으면 Windows \ System32에 있습니다.


windows / system32에서 java 파일을 삭제했으며 java 1.8 파일에 대한 3 개의 심볼릭 링크가 있었기 때문에 PATH 변수에서 c : \ ProgramData \ Oracle \ Java \ javapath도 제거했습니다.

% JAVA_HOME % 변수에 JDK 1.7이 있고 PATH에 java1.7 / bin이 있습니다.

PS1 : 내 문제는 Java 1.7과 Java 1.8 사이에있었습니다.

PS2 : 포인트가 충분하지 않기 때문에 Victor의 답변에 댓글로 추가 할 수 없습니다.


시작 메뉴에서 "regedit"를 입력하여 레지스트리 편집기를 엽니 다.

왼쪽 레지스트리 탐색기 / 트리 메뉴에서 "HKEY_LOCAL_MACHINE"으로 이동합니다.

"HKEY_LOCAL_MACHINE"레지스트리에서 "SOFTWARE"를 클릭하십시오.

"SOFTWARE"레지스트리에서 "JavaSoft"를 클릭하십시오.

"JavaSoft"레지스트리 목록에서 "Java Runtime Environment"를 클릭하면 설치된 Java의 여러 버전을 볼 수 있습니다.

"Java Runtime Environment"를 클릭하면 오른쪽에 4-5 개의 행이 표시됩니다. "CurrentVersion"을 선택하고 오른쪽 클릭 (수정 옵션 선택) 버전을 "1.7"로 변경하십시오.

이제 마법이 완성되었습니다


아직이 스레드를 팔로우중인 사람이 있는지는 모르겠지만 최근에 ActiveMQ 5.10을 Windows 서비스로 시작하려고 할 때이 문제가 발생했습니다.

JAVA_HOME 경로가 설정되지 않았습니다. Java 6과 Java 7이 설치되어 있지만 기본 버전은 v7입니다. (즉, 명령 창을 열고 "java -version"을 입력 한 경우).

This is where the clue was - "java -version" returned "Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)" but I was had installed the Win32 service...

It turns out that if you use the Win32 wrapper on a 64-bit machine it somehow decides to use a different version of Java...

So my fix was to uninstall the 32-bit version of the wrapper and install the 64-bit version. aversion on my machine; just habit I guess... But luckily I resolved the issue eventually...


For my Win7

Paradox was in being java.exe and javaw.exe in System32 folder. Opening that folder I couldn't see them but using search in Start menu I get links to those files, removed them. Next searsh gave me links to files from JAVA_HOME

magic )


Change to directory with correct java.exe i.e. go to the required JDK version java.exe

cd C:/Program Files/Java/jdk1.7.0_25/bin

Run the java.exe from this directory, it has precedence over registry and $PATH settings.

java -jar C:/installed/selenium-server-standalone-2.53.0.jar 

I solved this problem by uninstalling Java 1.8


The jar was compiled to be 1.6 compliant. That is why you get this error. Two resolutions:
1) Use Java 1.6

OR

2) Recompile the jar to be compliant for your environment 1.7


Using regedit, remove the entries corresponding to java 7. It will work.

참고URL : https://stackoverflow.com/questions/15277496/registry-key-has-value-1-7-but-1-6-is-required-java-1-7-is-installed

반응형