IT Share you

Mac OSX Java 터미널 버전이 잘못되었습니다.

shareyou 2020. 12. 3. 20:49
반응형

Mac OSX Java 터미널 버전이 잘못되었습니다.


좋아, 나는 Mac과 OSX를 처음 접했지만 내가 일하는 회사가 OSX와 Windows 시스템을 함께 사용하기 때문에 Java 프로그램에 대한 문제 해결을 수행 할 수 있도록 하나를 선택했습니다. 내가 겪고있는 문제는 Oracle 웹 사이트에서 Java 7을 설치할 때 환경 설정 메뉴를 업데이트하고 .jar 파일을 두 번 클릭하면 올바르게 실행되는 것처럼 보이지만 터미널 창의 버전은 여전히 ​​1.6.0_43이고 터미널의 동일한 .jar 파일로 인해 이전 버전으로 인해 런타임 오류가 발생합니다.

/ Library / Java / JavaVirtualMachines /로 이동하면 빈 폴더가 표시됩니다. 다른 기사에서 본 것에서 Java 1.7.0의 버전 폴더가 있어야합니다. 무슨 일인지 아십니까? 터미널에서 올바른 버전의 Java를 사용하려면 어떻게해야합니까?

편집 : @DWilches는 원래 답변에 대해 언급합니다. (1)

total 64
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.6 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.6.0 -> CurrentJDK
drwxr-xr-x  8 root  wheel  272 Mar 17 21:38 A
lrwxr-xr-x  1 root  wheel    1 Mar 17 21:38 Current -> A
lrwxr-xr-x  1 root  wheel   59 Mar 17 21:38 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents

(2)

ls -ld /usr/bin/java
lrwxr-xr-x  1 root  wheel  74 Mar 17 21:38 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

편집 : 새로운 답변으로 실수를해서 죄송합니다. 오랜만에 원본 게시물의 편집을 차단하는 사이트에 너무 익숙해졌습니다.


JDK

Mac OS에서 /usr/bin/java친구는 실제 JDK 명령에 위임하는 스텁입니다. 이 스텁은 당신의 설정 존중 JAVA_HOME환경 변수를하지만,이 작업을 위해 당신은 설치할 필요가 JDK (에서 http://www.oracle.com/technetwork/java/javase/downloads/index.html을 받는 반대) JRE ( http://java.com에서 ).

JDK는 /Library/Java/JavaVirtualMachines/jdk1.7.0_NN.jdk(NN 값에 관계없이)에 설치되므로 1.7 사용 하도록 JAVA_HOME환경 변수를 /Library/Java/JavaVirtualMachines/jdk1.7.0_NN.jdk/Contents/Home설정하십시오 /usr/bin/java. 당신은 단순히 지정하여 1.6로 다시 전환 할 수 있습니다 JAVA_HOME/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home대신. /usr/libexec/java_home도구를 사용하여 올바른 값을 자동으로 찾을 수 있습니다. 예를 들어 /usr/bin/javaJava 7을 사용할 수 있습니다.

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

Java 6을 사용하려면 다음을 수행하십시오.

export JAVA_HOME=`/usr/libexec/java_home -v '1.6*'`

Java 8 (사용 -v '1.8*') 에도 동일하게 적용됩니다 . 이렇게하면 관련 메이저 버전에 대해 최신 설치된 JDK가 선택 NN되므로 업데이트를 설치할 때 수동 으로 변경할 필요가 없습니다 .

JRE

명령 줄에서 1.7 또는 1.8 JRE 를 실행하려면 에서 찾을 수 있습니다 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java. 이것은 고정 경로이며 주어진 시간에 하나의 "공용"JRE 만 설치할 수 있습니다.

$ /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -version
java version "1.7.0_13"
Java(TM) SE Runtime Environment (build 1.7.0_13-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)

셸 별칭을 사용할 수 있습니다. .bashrc

alias java_jre='/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java'

문제는 Oracle의 JRE 설치가 / usr / bin / java 실행 파일을 변경하지 않는다는 것입니다. 이 Java를 사용하려면 / Library 아래의 경로를 사용해야합니다 (JDK 설치가 있으므로 다를 수 있음).

Oracle의 JRE 설치 문서에 따라

Oracle에서 JRE를 설치하면 java -version 심볼릭 링크가 업데이트되거나 경로에 java가 추가되지 않습니다. 이를 수행하려면 JDK를 설치해야합니다.

Oracle JDK는 /usr/bin/javaJava 7 실행 파일을 가리 키도록 변경 됩니다. 개발을하고 있다면 JRE보다 더 많은 것을 포함하므로 이것을 사용해야합니다.

Oracle 설치 FAQ에 따르면

Q : JRE 또는 JDK를 설치해야합니까?

A : Java 응용 프로그램을 실행하려면 JRE (Java Runtime Environment)를 설치하십시오. JRE는 Oracle Java라고도합니다. JRE를 설치 한 후에는 JAR 파일, JNLP 파일을 두 번 클릭하고 브라우저를 통해 Java 애플릿 및 응용 프로그램을 시작할 수 있습니다. 32 비트 모드의 Firefox 및 Chrome과 같은 32 비트 브라우저는 JRE에서 지원되지 않습니다.

If you plan to write Java applications, install the Java Development Kit (JDK).


First, did you Quit the Console and open it again so it has chances of taking the changes in the PATH variable ?

If you've already done this, then check which the default version of your Java is:

dwilches@ ~$ cd /System/Library/Frameworks/JavaVM.framework/Versions/
dwilches@ Versions$ ls -l
lrwxr-xr-x  1 root  wheel   59 Mar 19 10:07 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.6.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.6 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel    1 Mar 19 10:08 Current -> A
drwxr-xr-x  8 root  wheel  272 Mar 25 10:03 A

Now, you can see that the "Current" version is "A" (that's my Java7). If I would like to change it to Java 1.6 then I could write:

dwilches@ Versions$ sudo unlink Current
dwilches@ Versions$ sudo ln -s 1.6 Current

And then:

dwilches@ Versions$ java -version
java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01-447-11M4203)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01-447, mixed mode)

So you may use this to make "Current" point to your desired Java location.


Just like Ian said, but probably you want java7 to be called from .sh script, so you need a function instead of alias added to .bash_profile:

java7() {
    /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java "$@"
}
export -f java7

참고URL : https://stackoverflow.com/questions/15624667/mac-osx-java-terminal-version-incorrect

반응형