Programming

Mac OS X에 Java 7을 설치했지만 터미널에서 여전히 버전 6을 사용하고 있습니다.

procodes 2020. 2. 23. 12:05
반응형

Mac OS X에 Java 7을 설치했지만 터미널에서 여전히 버전 6을 사용하고 있습니다.


oracle 웹 사이트에서 다운로드 한 JDK 7u7을 설치했습니다. 그러나 설치 후에도 터미널에 여전히 Java 버전 6이 표시됩니다.

$java -version
java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)

왜 Java 7이 나타나지 않는지 아십니까?

답변 : 문제가 해결되었습니다. 대답은 다음과 같습니다. 터미널에 .bash_profile이 있고 java 홈 변수가 1.6으로 설정되어 있음을 발견했습니다.

export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"

그래서 이것은 새로운 터미널 창을 열 때마다 문제를 일으키는 선입니다. 이 줄을 제거하면 문제가 해결됩니다. 여전히 @aleroot가 말한 것을 따라야하지만, 그래도 효과가 없다면 .bash_profile (또는 .bashrc) 설정 파일을 확인하여 이전에 Java 버전을 내보냈는지 확인하십시오.


다음과 같이 Java 환경 설정 분할 창에 입력하고 JVM 7에만 플래그를 지정해야하기 때문입니다.

자바 환경 설정

Mac OS X에서 Java 환경 설정을 쉽고 빠르게 열려면 +를 사용SPACE 하여 스포트라이트를 호출 하고 시스템 환경 설정을 입력 하면 창의 마지막 행에 표시됩니다.


Oracle의 설치 프로그램은 Java를에 넣습니다 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin. 그리고 덮어 쓰지 않습니다 /usr/bin/java. 따라서

whereis java

터미널에서 / usr / bin / java를 반환합니다. (이것은 /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/javaApple의 1.6 버전 인을 가리킴).

따라서 새로운 Java 버전을 사용하려면 /usr/bin/java심볼릭 링크를 /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java대신 가리 키십시오 .

sudo rm /usr/bin/java
sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin

JDK 7을 설치하면 이 문제가 저절로 해결됩니다.

JRE (Java Runtime Environment)가 아니라 컴파일러 및 이와 유사한 기능을 포함하는 JDK (Java Development Kit)를 확보하십시오.


vi ~/.bash_profile

더하다

export JAVA_HOME=`/usr/libexec/java_home -v 1.7`

/usr/bin/java링크 대상에 최신 Java 7 패키지를 설치하도록 지시합니다 .

/Library/Java/JavaVirtualMachines/

JDK의 1.7.0_17 JAVA_HOME경우 :

/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home

참고 : 최근 Mac OS X을 Appels 자체 시스템 통합 Java 패키지에서 Oracle 기반 Java 패키지로 옮기기 위해이 영역에서 많은 변화가있었습니다. 위의 솔루션은 Mac OS X 10.8.2부터 잘 작동합니다


필자의 경우 문제는 Oracle이 이전과 다른 위치에 설치하고 있다는 것입니다.

Oracle에서 다운로드 : http://java.com/en/download/mac_download.jsp?locale=ko

  1. 시스템 환경 설정을보고 올바르게 설치되었는지 확인하십시오.

    • Spotlight를 열려면 Command-Space를 입력하고 'System Preferences'를 입력 한 다음 Enter 키를 누르십시오.
    • 맨 아래 행에서 Java 아이콘을 클릭하십시오. Java 제어판이 열리면 'Java'탭, '보기 ...'를 클릭하고 설치가 작동했는지 확인하십시오. 거기에 '경로'를 볼 수 있습니다.이 경로는 내 명령과 다른 경우 아래 명령에 속할 수 있습니다.
  2. 버전이 예상 한 것인지 확인하십시오 (필요에 따라 경로의 하위).

    / Library / Internet \ Plug-Ins / JavaAppletPlugin.plugin / Contents / Home / bin / java -version

  3. / usr / bin / java에서 새 설치로의 링크 작성

    sudo ln -fs / Library / Internet \ Plug-Ins / JavaAppletPlugin.plugin / Contents / Home / bin / java / usr / bin / java

  4. 위생 검사 버전 :

    자바-버전


맥에 설치된 버전과 일치하도록 Java 버전을 업데이트하지 않는 터미널과 비슷한 문제가 발생했습니다.

JAVA_HOME 환경 변수 설정에 문제가 없었습니다.

나는 일시적이고 다소 고통 스럽지만 작동하는 해결책을 생각해 냈습니다.

.bash_profile에서 다음 줄을 추가하십시오.

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home"

(이것은 내 컴퓨터의 경로이지만 귀하의 컴퓨터와 다를 수 있습니다. 경로는 / Library / Java / JavaVirtualMachines /와 일치해야합니다.)

질주 source ~/.bash_profile

내가 언급했듯이 이것은 자바 홈 경로가 하드 코딩되어 있기 때문에 임시 반창고 솔루션입니다. Apple이 이미 터미널에서 수행하고있는 것이므로 최신 경로를 설정할 수있는 방법이 없으며 문제는 Apple의 java_home 환경 변수가 업데이트되지 않는다는 것입니다.


El Capitan 이후 /usr/bin/java새로운 "루트리스"정책이 도입 되었기 때문에 심볼릭 링크 를 삭제하기가 어렵습니다 .

따라서, 단순히 (내 경우에는 이것이 최신 자바 버전에 대한 경로를 추가 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin받는 사람) PATH내에서 .bashrc파일 :

# Use latest java version
export PATH=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH

.bashrc현재 세션에 대한 파일 을 다시로드하려면 source ~/.bashrc셸에서 실행 하십시오. .bashrc파일을 변경하기 전에 시작된 세션에 대해서만이 작업을 수행해야 합니다.

이제 java쉘에서 사용할 때 최신 버전이 사용됩니다 .


나에게 가장 쉽고 깨끗한 방법은 다음과 같이 homebrew를 사용하여 Java를 설치하는 것입니다.

https://stackoverflow.com/a/28635465

brew update
brew cask install java

기본 문제 : /usr/bin/javaOSX 자체에서 처음 제공하는 문제 ( /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java) JDK 설치 프로그램에서 다운로드 한 문제를 지적해야합니다. 아래 단계는 OSX 10.10.4 Yosemite에 대한 것입니다.

  • 시스템 환경 설정을 열고-> Java를 선택하십시오. Java 창이 열립니다.
  • 상단의 Java 탭을 클릭하십시오. '보기'버튼을 클릭하십시오.
  • 다음과 같이 Java Runtime Environment 설정 탭이 열립니다. JRE 설정 탭
  • Path항목을 두 번 클릭 하고 경로를 복사하십시오 (cmd + c). 이것은 JDK 설치 프로그램 / 업데이트가 설치 한 최신 버전입니다. 내 경우에는 경로는/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
  • 터미널을 엽니 다. 이 단계에서는 ln -s시스템 java 바이너리를 이전 단계에서 발견 한 최신 버전 으로 지정합니다 (기호 링크, 명령). 아래 명령을 실행하십시오.

sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin/java

그게 다야. 확인하려면 java -version터미널에서 실행 하면됩니다. 설치 / 업데이트 한 최신 버전을 출력해야합니다.


터미널에서 다음 명령을 실행할 수 있습니다.

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"

그리고 이것은 Java old를 새로운 것으로 대체합니다.


내가 했어

export JAVA_HOME=`/usr/libexec/java_home`

Java 8 문제가 해결되었습니다.

전에:

java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)

후:

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)

http://www.java.com/en/download/faq/java_mac.xml 은 이해하기 좋은 곳이며, Apple은 Java에 대한 지원을 중단하고 왜 Java Preferences가 더 이상 존재하지 않고 System_Preferences => Java = > Oracle의 Java 7이 설치된 경우 Java.


Jenv 도구를 살펴 보시기 바랍니다.

그러면 설치된 JVM간에 언제든지 전환 할 수 있습니다.

간단히 :

jenv global oracle-1.7

나중에 테스트 목적으로 :

jenv global oracle-1.6

그리고 더 많은 명령을 사용할 수 있습니다.


JAVA_HOME 경로를 하드 코딩하는 것이 가장 좋은 방법은 아닙니다. /usr/libexec/java_home유틸리티는 Mac OSX Lion 10.7.5 및 JDK 1.7.0_13에서 작동합니다. 매뉴얼 페이지에 따르면 Apple의 이전 Java 환경 설정 창과 함께 사용되지만 Oracle (Java Control Panel)에서 제공하는 대체 기능과 함께 작동하는 것으로 보입니다. 예를 들어 running /usr/libexec/java_home -V은 내 컴퓨터에 설치된 모든 JDK (1.6. * 및 1.7. *)를 나열합니다.

따라서 다른 스레드에서 논의 된 것처럼 (예 : OSX에서 JAVA_HOME을 무엇으로 설정해야합니까 ) 여전히 .bash_profile에 다음 줄을 추가하는 것이 좋습니다.

export JAVA_HOME=$(/usr/libexec/java_home)

이것은 견과류입니다! 오라클은 아무것도 설치하지 않는 설치 프로그램을 어떻게 제공합니까?

어쨌든 그것은 다음과 같습니다.

sudo rm /usr/bin/java
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/java /usr/bin/java

여기서 1.8.0_31은 설치된 Java 버전입니다 ...


간단한 솔루션

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"

컴퓨터에 여러 Java 버전이 있고 런타임에 동적으로 선택하려는 경우, 즉 내 경우에는 두 가지 버전이 있습니다.

ls -la /Library/Java/JavaVirtualMachines
drwxr-xr-x  3 root  wheel    96B Nov 16  2014 jdk1.7.0_71.jdk/
drwxr-xr-x  3 root  wheel    96B Mar  1  2015 jdk1.8.0_31.jdk/

/ etc / profile 내용을 수정하여 변경할 수 있습니다. 파일 끝에 다음 두 줄을 추가하거나 수정하십시오.

export JAVA_HOME=YOUR_JAVA_PATH/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

필자의 경우 사용하려면 다음과 같아야합니다.

자바 7 :

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

자바 8 :

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

파일을 저장 한 후 실행 source /etc/profile 하면 제대로 작동합니다. 다음에 따라 첫 번째 옵션과 두 번째 옵션을 사용할 때의 결과는 다음과 같습니다.

자바 7 :

java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)

자바 8 :

java -version 
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)

Java 폴더가 다른 위치에있는 경우 프로세스가 비슷합니다.


jre가 아닌 jdk를 설치하려고 할 수 있다고 생각합니다. jdk를 설치하면 / usr / bin / java의 java가 바뀌고 모든 라이브러리가 제대로 작동합니다.


이 명령을 실행하여 / Library / Internet Plugins / 아래에있는 Java 버전을 찾을 수 있습니다.

defaults read /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist CFBundleVersion

.bash_profile이 변경 사항을 반영하지 않기 때문에 발생합니다. 반영하려면 다음 명령을 사용하십시오.

$ source .bash_profile

Homebrew를 설치 한 경우 java-switcher설치 하여 Java 기본 버전을 더 빠르게 변경할 수 있습니다.

brew tap andycillin/tap
brew install java-switcher

그런 다음 하나의 명령 만 사용하여 기본 Java 버전을 전환 할 수 있습니다.

java-switcher 1.7

또는

java-switcher 10

이 문제에 직면하지 않았기 때문에 직감을 겪고 있습니다.

당신은 이것을 시도 할 수 있습니다 :

소프트 링크 "java_home"은 어디에 있습니까?

ls -lrt /usr/libexec/java_home

출력 : (준비된) lrwxr-xr-x java_home-> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home

** ls -lrt /System/Library/Frameworks/JavaVM.framework/Versions 내 MAC은 다음을 생성합니다.

 lrwxr-xr-x CurrentJDK ->
 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents**

 lrwxr-xr-x   Current -> A
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.6.0 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.6 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.5.0 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.5 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.4.2 -> CurrentJDK
 lrwxr-xr-x  1 root  wheel   10 Oct 18 14:39 1.4 -> CurrentJDK

이것을 바탕으로 더 진행할 힌트가 있을까요?


Yosemite를 다시 설치하고 터미널 (java -version) 및 (javac -version)에서 Java 버전을 교차 확인 하여이 문제를 해결했습니다. 지금 완벽하게 작동합니다. 버전 6이 여전히 존재하므로 java 7로 변경되지 않습니다 (command + n ) libray> java> javavirtualmachine> javac 현재 버전 .java 홈으로 주소 지정해야합니다.


이 문제를 해결했습니다. sudo rm /usr/bin/java

그리고 마지막 Java SE Runtime Environment를 다운로드하여 설치했습니다. http://www.oracle.com/technetwork/java/javase/downloads/index.html

sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/java /usr/bin/java내가있어 때문에 나를 위해 작동하지 않았다 Operation not permitted. El Capitan은 이제 특정 시스템 디렉토리를 "루트리스"모드 (일명 시스템 무결성 보호)로 보호합니다. macOS Sierra 및 아마도 새로운 macOS 버전에도 적용 할 수 있습니다.


Oracle 사이트에서 분산 JDK DMG를 통해 설치하면 모든 것이 자동 업데이트됩니다. (El Capitan에서) System Preferences > Javado 업데이트를 통한 업데이트를 보았지만 명령 줄에는 반영되지 않았습니다. DMG를 통해 설치하면 작업이 수행됩니다.


설치된 JDK 버전을 확인하십시오.

$ ls  /Library/Java/JavaVirtualMachines/
jdk-11.0.2.jdk  jdk1.8.0_91.jdk

이제 ~/.bashrc내보내기 JAVA_HOME에서 버전을 지정하십시오.

if [ -e /usr/libexec/java_home ]; then
  export JAVA_HOME=$(/usr/libexec/java_home -v 11)
fi

bashrc 파일을 소싱하면 Java 버전이 업데이트됩니다.

$ java -version
java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)

최신 100 % 효과적인 방법 :


bash에서 :

vim ~/.bash_profile

더하다

export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
  • :wq 저장
  • cmd + q 강제 종료 bash
  • bash를 다시 열고 입력하십시오. java -version

그러나 실제로이 경로는 jdk가 아닌 jre를 가리 킵니다.

JDK 경로를 가리 키려면 다음이 필요합니다.

  1. 단일 JRE 런타임이 아닌 JDK를 설치했는지 확인하십시오.
  2. 이전 경로를 대체 PATH="/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk", 당신은 갈 수 /Library/Java/JavaVirtualMachines있는지 당신은 당신이 예상 JDK의 버전을 설치 할 수 있습니다.

참고 : https://stackoverflow.com/questions/12757558/installed-java-7-on-mac-os-x-but-terminal-is-still-using-version-6



반응형