2016-10-18 2 views
1
내가

스위치 자바 버전 - 키 레지스터에 문제

윈도우 10에서 Java 7 및 Java 8 사이를 전환 할 필요가

나는 모두가 설치되어 내 PATH에서

C:\Program Files\Java\jre1.8.0_91 
C:\Program Files\Java\jre7 

은 일반적인가 경로 (java 실행 파일에 대한 링크 포함). 이 구성 으로

C:\ProgramData\Oracle\Java\javapath\java.exe >> C:\Program Files\Java\jre1.8.0_91\bin\javapath\java.exe 
C:\ProgramData\Oracle\Java\javapath\javaw.exe >> C:\Program Files\Java\jre1.8.0_91\bin\javapath\javaw.exe 
C:\ProgramData\Oracle\Java\javapath\javaws.exe >> C:\Program Files\Java\jre1.8.0_91\bin\javapath\javaws.exe 

: 나는 자바 (8)을 실행할 때, 나는 3 개 실제 C:\Program Files\Java\jre1.8.0_91 (명령 mklink /H [link] [origin]에) 링크를 만들

Path=C:\ProgramData\Oracle\Java\javapath;.. 

:이 모든 eviroment 변수의 유일한 자바 값입니다 그것은을 작동합니다. C:\Program Files\Java\jre7

하지만, 자바 7을 실행하고자 할 때, 내가 만드는 3 실제 링크 :

C:\ProgramData\Oracle\Java\javapath\java.exe >> C:\Program Files\Java\jre7\bin\javapath\java.exe 
C:\ProgramData\Oracle\Java\javapath\javaw.exe >> C:\Program Files\Java\jre7\bin\javapath\javaw.exe 
C:\ProgramData\Oracle\Java\javapath\javaws.exe >> C:\Program Files\Java\jre7\bin\javapath\javaws.exe 

내가 자바를 실행하려고, 작동하지 않습니다! 나는 다음과 같은 오류 얻을 :

Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion' 
has value '1.8', but '1.7' is required. 
Error: could not find java.dll Error: Could not find Java SE Runtime Environment. 

해결 방법이 있습니다,하지만 내가 많이 그것을 좋아하지 않아.

  • 퍼센트 경로 %에 C:\Program Files\Java\jre7\bin; 추가가 다르기 때문에

    1. 퍼센트 경로 %에서 C:\ProgramData\Oracle\Java\javapath;를 제거

    나는이 솔루션을 좋아하지 않아을 : 나는 자바 7에만이 방법을 사용할 수 있습니다 이전 구성으로 인해 PATH에서 값을 수동으로 제거해야하기 때문입니다.

  • +0

    단지 복사하여 붙여 넣기 문제입니까 아니면 실제로 존재하지 않는 .. \ jre7 \ bin \ ** javapath ** \ java.exe에 연결 했습니까? –

    +0

    이것은 전체 명령이며 작동합니다 :'mklink /HC:\ProgramData\Oracle\Java\javapath\java.exe "C : \ Program Files \ Java \ jre7 \ bin \ java.exe" – Radioleao

    +0

    문제는 java.exe는 JRE 디렉토리가 어디서 시작되었는지를 먼저 확인하여 JRE 디렉토리를 찾습니다. javapath 디렉토리에는 JRE가 없으므로 레지스트리에서 찾아서 잘못된 디렉토리를 찾습니다. 경로에 JRE7 \ bin 디렉토리를 추가하면 java.exe가 경로를 찾습니다. javapath 디렉토리를 삭제할 필요는 없습니다. jre7 \ bin이 맨 앞에 오도록하십시오. 'path % programfiles % \ Java \ jre7 \ bin; % path %'이면 충분합니다. –

    답변

    2

    오라클의 권장 방법은 무엇인지 알고 있지만이 정보를 찾을 수없는 것이 좋습니다. 다음은 합리적인 해킹 해결 방법 일 수 있습니다 (이전에 비슷한 방법을 사용했습니다).

    mklink /j "C:\Program Files\Java\jre" "C:\Program Files\Java\jre1.8.0_102" 
    

    이 그런 다음 PATH에서 C:\ProgramData\Oracle\Java\javapath를 제거하고 C:\Program Files\Java\jre\bin로 교체 :

    는 접합 (또는 심볼릭 링크)를 만듭니다. 이제

    , 당신이 자바 7로 전환 할 때마다, 그냥 할 : 당신이 지금 java를 입력 할 때 때문에이 작동

    rd "C:\Program Files\Java\jre" 
    mklink /j "C:\Program Files\Java\jre" "C:\Program Files\Java\jre7" 
    

    그것은 C:\Program Files\Java\jre\bin\java.exe에서합니다 (PATH에서) 찾을 수 있습니다. 실행 파일은 어떤 디렉토리에 있는지 알며 다른 파일 (jar, DLLs 등)을 찾습니다. 이 jre7의 별칭이되었으므로 올바른 이름을 찾습니다. 그리고 그것들을 발견했기 때문에 그것은 레지스트리에서 보지 않습니다.

    물론 두 버전 간을 전환하는 명령이 포함 된 배치 파일이나 바로 가기 아이콘을 만들 수 있습니다.

    +0

    당신과 나의 구성 사이의 차이점은 당신이 폴더를위한'mklink/J'를 생성하고, 실행 가능한 파일을위한'milink/H'를 생성한다는 것입니다. 슬프게도, 당신의 솔루션 레지스트리 키에 동일한 오류가 있습니다. 폴더에서'mklink/H '와 동일합니다. 이유는 모르지만 링크 대신 PATH에 실제 폴더가 있으면 모든 차이가 있습니다. – Radioleao

    +0

    @Radioleao'mklink/h'는 폴더에서 작동하지 않으므로'mklink/d'를 사용해야합니다. 시도해 볼 수도 있습니다. –

    +0

    필자는 4 가지 설정을 시도했다 : 파일의 하드 링크 - 폴더의 하드 링크 - 파일의 심볼릭 링크 - 폴더의 심볼릭 링크. – Radioleao

    0

    100 % 아니지만 JAVA_HOME 변수를 사용하려는 버전으로 설정해야 할 수도 있습니다.

    +0

    오늘까지는 JAVA_HOME 없이도 항상 작동했습니다. 오래된 물건 일 수 있습니까? 어쨌든 ** SET JAVA_HOME = C : \ Program Files \ Java \ jre7 **을 시도했지만 아무 것도 변경되지 않았습니다. – Radioleao

    +0

    죄송합니다. 나는 가까이서 봐야했습니다. JAVA_HOME은 JDK 용입니다. JRE_HOME이 JRE에 적용됩니다 – josh

    +0

    chages가 없습니다. 그러나 추가 문제로 % PATH % 환경 변수의 값을 변경하면 작동하지만 이것이 최선의 해결책은 아닙니다. 내 요청을 업데이트 할 것입니다. – Radioleao