레지스트리 키 오류 : Java 버전에 '1.8'값이 있지만 '1.7'이 필요합니다.


91

달리는 동안

sencha app build production

다음과 같은 오류가 발생합니다.

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

값은 '1.8'이지만 '1.7'이 필요합니다. 오류 : java.dll을 찾을 수 없습니다. 오류 : Java SE 런타임 환경을 찾을 수 없습니다.

java -version , 명령은 다음을 표시합니다.

Java 버전 "1.8.0_40"Java (TM) SE 런타임 환경 (빌드 1.8.0_40-b26) Java HotSpot (TM) 64 비트 서버 VM (빌드 25.40-b25, 혼합 모드)

경로가 잘못된 곳을 찾을 수 없습니다. 어떤 생각?

----------------------- 편집하다 -------------------------- ----------------------

참고 : Windows 7 (64 비트)을 사용하고 있습니다.

sencha touch cmd를 제거하고 다시 설치해 보았습니다. 그러나 여전히 같은 오류입니다.

모든 Java 버전 인스턴스를 제거하고 최신 인스턴스를 다시 설치했지만 여전히 문제가 지속됩니다.

답변:


294

수백 가지 이상의 트릭을 시도한 끝에 마침내 성공했습니다.

나는 모두 제거 java.exe, javaw.exejavaws.exe에서 내

  1. Windows\System32

  2. Windows\SysWOW64 폴더. [x64 시스템 (Win 7 64 비트) 인 경우 2 단계 시도]


11
Win 10 64Bit 사용자 : 3 개의 파일을 삭제 System32하면 문제가 해결됩니다.
iTurki

4
하지만 cmd를 닫았다가 다시 열고 java -version을 입력하여 변경 사항을 확인해야합니다 ... 참 감사합니다!
Cristian B.

1
@SkepticScribbler : 이것은 자바 자체를 혼동 할 때 발생합니다. JRE 8을 찾은 Java 7 VM을 실행하려고합니다. 잘못 구성된 환경에서 명령 줄에 java 또는 java -version 만 입력해도이 문제가 표시 될 수 있습니다.
아난드 굽타

-이 @AnandGupta a를 어둠 속에서 샷, 솔루션입니다 stackoverflow.com/a/53192247/1423507
masseyb

39

제 경우 (Windows 7 64 비트)에서는 다음을 수행했습니다.

  • C : \ ProgramData \ Oracle \ Java \ javapath에 대한 참조를 제거했습니다 . 로부터 경로 환경 변수
  • C : \ Windows \ System32 폴더 에서 java , javawjavaws 파일을 제거했습니다 .

그 후 열려있는 모든 명령 줄 콘솔을 닫고 다시 열고 java -version을 실행했습니다 .


JDK5u14, JDK6u34, JDK7u51 및 JDK8u121 (순서대로)을 설치할 때 Windows 10에서이 문제가 발생했습니다. Windows 폴더에서 Java 파일을 제거하는 것만으로는 충분하지 않습니다. PATH 환경 변수에서 경로를 제거해야했습니다.
uhm

32
  1. regedit 열기
  2. 이동 [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
  3. CurrentVersion을 "1.8"에서 "1.7"로 변경

2
감사. 그것은 내 문제를 해결했습니다. SysWOW64에서 항목을 삭제할 권한이 없습니다. regedit를 통해 CurrentVersion을 변경하면 문제가 해결되었습니다.
Krish

1
모든 외부 Java 버전을 삭제하는 것보다 훨씬 간단한 솔루션입니다!
Fred Andrews

.. 그러나 그것은 아무것도 해결하지 못합니다. 그런 다음 설치 프로그램은 Java 8이 필요하다고 불평합니다.
user508402

감사합니다.이 솔루션은 오랫동안이 오류를 해결하려고 노력했습니다
Abhishek Sawant

19

re : Windows 사용자

아니요. PATH 변수에서 Javapath 환경 참조를 제거하지 마십시오.

레지스트리가 작동하지 않는 이유는 Oracle Javapath 스크립트가 JRE 및 JDK 디렉토리 앞의 PATH 시퀀스에서 실행되어야하기 때문입니다. 현재 버전을 정렬합니다.

이 디렉토리를 %PATH%변수 의 HEAD에 넣으십시오 .

C:\ProgramData\Oracle\Java\javapath

[또는 데스크탑 어디에 있든]

그래서 당신의 PATH는 다음과 같이 보일 것입니다.

PATH=C:\ProgramData\Oracle\Java\javapath;<other path directories>;E:\Program Files\Java\jdk1.8.0_77\bin;E:\Program Files\Java\jre1.8.0_77\bin

그러면 올바른 현재 버전이 표시됩니다.

C:\>java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)

이것은 나를 위해 작동합니다. Windows 7 (64 비트)이 있습니다. 제안한대로 C : \ ProgramData \ Oracle \ Java \ javapath를 PATH의 시작 부분으로 이동했습니다. 감사!
softwarelover

1
이봐 요! 컴퓨터를 다시 시작하는 것을 잊지 마십시오. 감사합니다.
Sandoval0992

12

내 경험:

Windows 8.1을 사용 하고 있으며 JAVA 버전을 1.8에서 1.7로 다운 그레이드했는데 동일한 오류가 발생했습니다.

오류 : 레지스트리 키 'Software \ JavaSoft \ Ja의 값은'1.7 '이지만'1.8 '이 필요합니다.

C : \ Windows \ System32 폴더 에서 java.exe , javaw.exejavaws.ex e를 삭제 했으며 저에게 효과적 이었습니다.


경로에 다른 Java 버전에 대한 다른 Java 실행 파일이 있으면 작동하지 않습니다.
언더 벌스

9

나는 같은 문제가 있었다. 나를 위해 일한 간단한 해결책은 for의 항목을 다시 정렬하는 것 PATH입니다 JRE/JDK. 이 문제는 설치 후 JRE 8일부 실행 파일을 System32 or SysWOW64디렉토리에 넣은 후 나타나기 시작했으며 이러한 실행 파일이 엉망입니다. 문제를 해결하려면 :

  1. JDK 홈을 가리키는 환경 변수를 JAVA_HOME.

    set JAVA_HOME=C:\Progra~1\Java\jdk1.8.0_45

  2. %JAVA_HOME%\binPATH 환경 변수의 시작 부분에 항목 을 넣으십시오 . 의 기존 값을 추가합니다 PATH. 예를 들면 :

    path=C:\Program Files\Java\jdk1.8.0_45\bin;%path%


3
여러 버전의 Java를 나란히 유지하고 레지스트리를 수정하고 windows \ system 폴더에서 파일을 제거 할 권한이없는 경우 가장 좋은 솔루션입니다.
Heinz

3

java.exe 파일은 삭제하지 않았지만 시스템의 순서 ( "path"변수)를 변경하여 % JAVA_HOME % \ bin을 첫 번째 항목으로 반영했습니다. 그게 트릭이었습니다.


3

오류가 명시 적입니다 ...

오류 : 레지스트리 키 'Software \ JavaSoft \ Java Runtime Environment'\ CurrentVersion '에'1.8 '값이 있지만'1.7 '이 필요합니다.

오류 : java.dll을 찾을 수 없습니다.

오류 : Java SE Runtime Environment를 찾을 수 없습니다.

... > 레지스트리 키 값이 1.8 인 java.exe동안 1.7 실행 파일 을 사용하려고합니다 .HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime EnvironmentCurrentVersion

제안 된 솔루션의 반복되는 주제는 오류가 구성 오류라는 것 입니다. 이 오류는 여러 가지 다른 방식으로 해결 될 수있다 (와 사용자의 환경이나 자바 실행 파일의 제거의 예 재구성 손가락-넘어 희망 또 다른 대체이 존재 함을 java.exe사용자의를 %PATH%하고, 대체가 java.exe올바른 실행 파일입니다).

올바른 해결책은 당신이 달성하려고하는지에 따라 달라집니다 : "? 당신은 JDK-7에 JDK-8로 업그레이드하려고 JDK-8에서 다운 그레이드하려고 ..."

복제 단계

  1. jdk-7u80-windows-x64.exe 설치

메모:

  • java.exe사용자 %PATH%가 사용할 수 있는 실행 파일 은C:\Windows\System32
  • 설치는 사용자를 업데이트하지 않습니다. %PATH%
  • HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment> CurrentVersion문자열 레지스트리 항목 값으로 (다른 사람의 사이에서) 작성1.7
  1. jdk-8u191-windows-x64.exe 설치

메모:

  • 사용자 %PATH%C:\Program Files (x86)\Common Files\Oracle\Java\javapath첫 번째 항목 으로 포함 되도록 업데이트됩니다.
  • 하여 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment> CurrentVersion문자열 레지스트리 항목 값이 업데이트됩니다1.8
  1. 사용자 %PATH%환경 변수를 업데이트하고 제거합니다.C:\Program Files (x86)\Common Files\Oracle\Java\javapath

  2. 새 명령 프롬프트에서 java -version

오류 : 레지스트리 키 'Software \ JavaSoft \ Java Runtime Environment'\ CurrentVersion '에'1.8 '값이 있지만'1.7 '이 필요합니다.

오류 : java.dll을 찾을 수 없습니다.

오류 : Java SE Runtime Environment를 찾을 수 없습니다.

솔루션

  1. OP의 솔루션 https://stackoverflow.com/a/29769311/1423507 은 오류에 대한 "손잡이가 교차하고 java.exe사용자에게 %PATH%폴 백이 있고 폴백 실행 파일이 올바른지 희망 "접근 방식입니다. 복제 단계가 주어지면 java.exe, javaw.exejavaws.exe실행 파일을 C:\Windows\System32(내 경우에만) 제거하면 더 이상 java.exe사용자에게 존재 하지 않아 해결책이 아닌 %PATH%오류가 발생 'java' is not recognized as an internal or external command, operable program or batch file.합니다.

  2. 답변 https://stackoverflow.com/a/35775493/1423507https://stackoverflow.com/a/36516620/1423507은 작동하지만 java.exe1.7 을 사용하도록 되돌립니다 (예 : CurrentVersion레지스트리 키 값을 다음에서 java.exe찾은 버전 과 일치하도록 업데이트). 사용자 %PATH%).

  3. java.exe1.8이 사용자에서 처음 발견 되었는지 확인하십시오 %PATH%(어떻게하는지는 관련이 없음).

    • 먼저 %PATH%포함 할 사용자 업데이트 C:\Program Files (x86)\Common Files\Oracle\Java\javapath(해당 디렉토리의 실행 파일이 올바른지 확인)
    • %PATH%먼저 Java 바이너리의 절대 경로를 포함 하도록 사용자 를 업데이트하십시오 ( set PATH="C:\Program Files\Java\jre1.8.0_191\bin;%PATH%").
    • 세트 자바 특정 환경 변수 및 업데이트 사용자 %PATH%그들과 함께 ( set JAVA_HOME="C:\Program Files\Java"; set JRE_HOME=%JAVA_HOME%\jre1.8.0_191; set PATH=%JRE_HOME%\bin;%PATH%)

@whoever_that_downvotes-이 답변은 건설적인 피드백 없이는 향상 될 수 없습니다. "이유"에 대한 의견을 남기면 커뮤니티의 이익을 위해이 답변을 더 잘 만들 수 있습니다.
masseyb

2

Java를 실행하는 일부 Windows 서비스에서이 오류가 발생했습니다. 결국 내 컴퓨터에서 다른 버전의 Java를 제거하려고했습니다.

1.8 만 남겼고 이제 모든 것이 작동합니다.


1

aribeiro 답변이 저에게 효과적이었습니다.

  • C : \ ProgramData \ Oracle \ Java \ javapath에 대한 참조를 제거했습니다. Path 환경 변수에서
  • 내 PATH 환경 변수의 첫 번째 항목으로 / path / to / jdkhome을 만들었습니다. 이것만으로도 충분하다고 생각합니다.

1

나를 위해 win7 64bit.

폴더에 java.exe javaw.exe javaws.exe를 복사하십시오. C:\Program Files\Java\jre1.8.0_91\bin to the C:\Windows\System32.

그런 다음 cmd를 열고 java -version을 입력하십시오.

C:\Users\HEcom>java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

위의 전에 레지스트리의 CurrentVersion이 1.8인지 확인하십시오.

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

  1. 왼쪽 레지스트리 탐색기 / 트리 메뉴에서 "HKEY_LOCAL_MACHINE"으로 이동합니다.
  2. "HKEY_LOCAL_MACHINE"레지스트리에서 "SOFTWARE"를 클릭하십시오.
  3. "SOFTWARE"레지스트리에서 "JavaSoft"를 클릭하십시오.
  4. "JavaSoft"레지스트리 목록에서 "Java Runtime Environment"를 클릭하면 설치된 Java의 여러 버전을 볼 수 있습니다.
  5. "Java Runtime Environment"를 클릭하면 오른쪽에 4-5 개의 행이 표시됩니다. "CurrentVersion"을 선택하고 오른쪽 클릭 (수정 옵션 선택) 버전이 "1.8"인지 확인하십시오.

이것은 정말 나쁜 생각입니다. 이미 경로에있는 폴더로 파일을 이동하는 대신 바이너리 폴더를 경로에 추가해야합니다. 다른 누군가가 시스템에서 Java를 업데이트해야하고이 "솔루션"에 대한 지식이없는 경우 끔찍한 골칫거리가 될 수 있습니다. 그리고 그것이 바로 작전의 문제 소스입니다. 대신 경로를 수정하십시오.
Riwels

I just MOVEI just COPY 로 변경 하면 괜찮을 것입니다.
Matthieu

1

이 문제에 대한 나의 해결책은 위의 모든 것을 읽고 시도한 후에 나왔습니다.

제 경우에는 .NET에서 출력물을 사용하기 위해 Java를 다운 그레이드하려고했습니다 Apache ActiveMQ. 모든 Java 버전을 제거하고 레지스트리를 정리 한 후 동일한 오류가 발생했습니다.

오류 : 레지스트리 키 'Software \ JavaSoft \ Java Runtime Environment'\ CurrentVersion '에'1.7 '값이 있지만'1.8 '이 필요합니다. "

내 경우에는 내가, 환경 변수, 편집 경로로 이동하는 데 필요한 javapath 위치 (열 C:\ProgramData\Oracle\Java\javapath)을 그리고 있었다 - 세 개의 파일 ( java.exe, javaw.exe, javaws.exeJRE8 버전에서 유지).

이 사실을 확인한 후 C:\Windows\SysWOW64디렉토리 ( JRE7버전 에서 가져온 파일)의 동일한 파일로 간단히 전환 했으며 모두 완벽하게 작동했습니다.


1

최신 자동 Java 업데이트 후 명령 프롬프트에서 Java를 실행할 수 없습니다.

내 경로 변수에는 'C : \ ProgramData \ Oracle \ Java \ javapath;'

나는 'C : \ ProgramData \ Oracle \ Java \ javapath;'로 cd 할 수 없습니다. 존재하지 않았으므로 명령 프롬프트 창에서.

C : \ ProgramData \ Oracle \ Java \ javapath를 제거했습니다. ' 경로 변수에서 'C : \ Program Files \ Java \ jre1.8.0_141 \ bin;'으로 대체했습니다.


이것은 답변 이라기보다는 코멘트에 가깝습니다. 질문은 매우 구체적인 도구에 관한 것이며 Java가 실제로 발견되었음을 분명히 밝힙니다.
GhostCat

1

JAVA_HOME 변수에 jdk 폴더를 정의하고 변수 경로에 % JAVA_HOME %을 추가해야합니다.

system32 폴더에서 java.exe, javaw.exe 및 javaws의 이름을 삭제하거나 변경하십시오.

cmd.exe를 실행하고, java -version은 이제 JAVA_HOME에서 정의한 새 버전을 사용합니다.


1

Anand Gupta의 답변 외에도 필요한 Java를 제외한 다른 Java가 사용되지 않는지 확인하십시오. which java( where javaWindows의 경우) 실행 하고 어떤 Java 실행 파일이 사용되는지 확인합니다. 사용하지 않으려는 항목을 삭제하고 필요한 항목이 없으면 PATH에 추가하십시오.


0

먼저 Java 7이 있어야합니다. 설치되어 있지 않으면 먼저 설치하십시오 (사용중인 Linux, Mac, yum, apt, homebrew가 무엇인지 모르겠습니다. 직접 알아봐야합니다.)

Java 7이 이미있는 경우 다음을 실행하십시오.

echo $JAVA_HOME

출력은 다음과 같아야합니다 /usr/lib/jvm/java-8-oracle.. 이 디렉토리 근처에 디렉토리가 표시 java-7됩니다. 찾은 후 실행

export JAVA_HOME=${java-7-dir}

{java-7-dir}디렉토리 경로로 변경하십시오 . 그런 다음 명령을 실행할 수 있습니다.

이것은 일시적인 해결책 일뿐입니다. 영구적으로 변경하려면 위의 명령을 ~/.bashrc파일에 넣으십시오 .

편집 : Windows를 사용하는 경우의 환경 변수를 JAVA_HOMEJava 7 설치 디렉토리 경로로 변경하십시오.


@AnandGupta Windows 케이스를 추가했습니다.
mtyurt

Linux의 경우 JAVA_HOME에 Java 바이너리 경로를 제공해야합니다. 예 : /usr/java/jdk1.5.0_07/bin/java. Windows의 경우 설치 디렉토리 만 수행해야합니다.
Aditya K

0

Talend Open Studio 64 비트 버전과 동일한 문제를 공유 한 짧은 공헌입니다.

  1. .. \ TOS_DI-Win32-20150702_1326-V6.0.0 \ TOS_DI-win-x86_64.exe를 수동으로 시작합니다 (시작 Windows 메뉴에 연결되지 않음).
  2. 이 레지스트리 오류 메시지가 나타납니다.

이 문제를 해결하려면 c : \ ProgramData \ Oracle \ Java \ javapath \에서 모든 java.exe, javaw.exe 및 javaws.exe 파일을 제거하십시오.

그리고 TOS는 64 비트 버전으로 올바르게 시작합니다!


0

시스템 경로에서 제거하십시오.

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

그리고 자바 버전을 1.7에서 1.8로 업그레이드 할 때 발생하는 문제를 해결합니다.


1
이유를 말씀해 주시겠습니까?
Vinay Prajapati 2015

0

가능한 경우 "경로"에있는 jre 버전 1.8의 다른 java.exe 어딘가에 존재합니다. jre가 필요한 응용 프로그램의 경우 사용자 tempdata에있을 수 있습니다.


0

JAVA_BIN 및 JAVA_HOME 시스템 변수를 변경 한 다음 시스템을 다시 시작하거나 다시 로그인하십시오. 여전히 jdk1.7 경로이기 때문에 해당 오류가 발생합니다. Windows에서는 다음과 같습니다. 여기에 이미지 설명 입력


0

Java SE Runtime Environment JRE 7 만 설치하십시오!

이제 "제어판"의 "프로그램 및 기능"에 "java 7"및 "java 8"이 표시됩니다.

그것은 나를 위해 일했습니다.


0

이 문제에 대한 한 가지 가능한 해결책은 Sencha Cmd 5 + Java 8 Error 스레드에서 sugested로 Sencha CMD 폴더에 bat 파일을 추가하는 것 입니다.

배치의 이름은 다음 코드와 함께 "sencha.bat"입니다.

@echo off
set JAVA_HOME=<YOUR JDK 7 HOME>
set PATH=%JAVA_HOME%\bin;%PATH%
set SENCHA_HOME=%~dp0
java -jar "%SENCHA_HOME%\sencha.jar" %*

sencha 폴더에 넣으십시오. 제 경우에는

C:\Users\<YOUR USER>\bin\Sencha\Architect\Cmd\6.2.0.103

다음 단계는 PATHEXT 환경 변수를 변경하는 것입니다. 최소한의 영향을 미치도록 사용자 변수를 변경하십시오.

나는

COM;.CMD;.EXE;.BAT;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

...에

COM;.BAT;.EXE;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

아이디어는 Windows가 .exe 파일보다 먼저 .bat 파일을 실행하도록하는 것입니다. 이것은 sencha 폴더에 이미 "sencha.exe"파일이 있기 때문에 중요합니다. 그리고 명령 줄에서 "sencha"를 입력하면 "sencha.bat"대신 "sencha.exe"가 실행됩니다.

이것은 권한과 관련하여 매우 제한적이기 때문에 효과가 있었던 유일한 솔루션이었습니다.


0

내 시스템 :-Windows 8.1

자바 환경

  • C : \ JavaEnvironment \ Java \ jdk1.8.0_161
  • C : \ JavaEnvironment \ Java \ jdk1.7.0_75

최근에 Oracle 11g XE를 설치했는데 명령 프롬프트에서 "java"명령에 액세스 할 때 언급 된 오류 메시지를 받았습니다.

환경 변수를 확인하고 시퀀스 (이전 답변에서 언급 한대로)를 확인한 후 시스템 PATH 변수에 첫 번째 항목으로 다음 항목이 있음을 발견했습니다.

C : \ OracleDatabase \ oraclexe \ app \ oracle \ product \ 11.2.0 \ server \ bin ;

시퀀스를 변경하고 JDK 경로를 첫 번째 항목으로 정의했습니다.

여기에 이미지 설명 입력

User Variable : Path에 동일한 변경 사항을 복제했습니다.

여기에 이미지 설명 입력

위의 활동을 마친 후 명령 프롬프트를 다시 시작하고 java -version 명령을 실행했는데 문제가 사라졌습니다. 현재 버전으로 Java 8을 표시했습니다.


-1

비슷한 문제가 있습니다. JDK 및 JRE 경로를 경로 변수의 맨 위로 이동하면 문제가 해결되었습니다 (System32에있는 것보다 우선 순위가 높습니다).

예를 들어 다음은 내 것입니다.

여기에 이미지 설명 입력


-2

프로그램 목록에서 Java 8을 제거합니다. 아래 단계에 따라 :-

바탕 화면에서 화면 왼쪽 하단의 시작 메뉴 (또는 시작 볼)를 클릭합니다. 제어판으로 이동하십시오. 프로그램 및 기능을 클릭하십시오. Java8을 선택하고 제거를 클릭하십시오.


-2

작업 관리자에서 java와 관련된 모든 응용 프로그램을 종료 한 다음 C : \ windows \ System32에서 Java.exe, Javaw.exe 및 Jawaws.exe를 삭제합니다.

이것은 당신의 문제를 해결할 것입니다 ... :)


당면한 문제를 어떻게 해결할 수 있는지 분명히 말씀해 주시겠습니까?
Muhammad Mamoor Khan

-3

방금했고 작동했습니다

HKLM> 소프트웨어> JavaSoft> Java 런타임 환경

수동으로 현재 버전을 1.7로 변경하십시오.

롤 ...하지만 작동했습니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.