나는 rhel VM을 섰다. JDK가 설치되어 있는지 궁금해서 쉘(bash)에서 명령어를 실행해봤습니다.
whereis java
다음을 반환합니다.
java: /usr/bin/java
그래서 해당 경로로 이동하여 Java 프로그램을 확인합니다.
ls -l java
반품:
lrwxrwxrwx 1 root root 26 May 2016 10:52 java -> /usr/java/default/bin/java
지금까지는 괜찮았지만 Java 프로그램을 실행할 때:
java
-bash: java: command not found
Java에 대한 심볼릭 링크가 있는 것 같지만 /usr/java/default/bin/java가 더 이상 존재하지 않습니다. Java(jdk)가 설치되어 있는지 확인하고 싶은데 제가 본 내용으로는 확실하지 않습니다. 나는 그것이 설치되지 않았다고 믿고 싶습니다. 그렇다면 왜 시스템은 java: /usr/bin/java를 반환합니까?
답변1
나는 그것이 설치되지 않았다고 믿고 싶습니다. 그렇다면 왜 시스템은 java: /usr/bin/java를 반환합니까?
whereis
심볼릭 링크는 해결되지 않습니다. 따라서 /usr/bin/java가 여전히 존재하는 경우 심볼릭 링크 대상이 손상되더라도 여전히 반환됩니다 . 올바른 결과를 얻으려면 java: /usr/bin/java
사용하는 것이 좋습니다 . type -a java
심볼릭 링크 대상 또는 심볼릭 링크가 아닌 소스 파일은 둘 다 실행 가능해야 합니다( chmod +x
설정하려면). 그렇지 않으면 type -a
파일이 존재하더라도 명령은 찾을 수 없음을 반환합니다( type
실행 가능 여부에 관계없이 여전히 반환됩니다).
따라서 다음과 같이 단순화할 수 있습니다.
whereis: 심볼릭 링크가 끊어졌거나 실행할 수 없는 경우에도 반환됩니다.
유형: 실행 가능하지 않은 경우에도 "발견됨"을 반환하고, 심볼릭 링크가 끊어진 경우 "찾을 수 없음"을 반환합니다.
type -a: 기호 링크가 손상되었거나 실행할 수 없는 경우 찾을 수 없음을 반환합니다.
입력 파일이 존재하지 않으면 이들 모두 찾을 수 없음을 반환합니다.
그래서 제가 제안할 수 있는 것은 JDK를 다시 설치하는 것입니다."Oracle JDK"는 "OpenJDK"보다 낫습니다..
좋은 글을 발견할 수 있습니다여기.
다음을 수행할 수 있습니다(시스템이 x64라고 가정).
sudo rpm -ivh jdk-8u91-linux-x64.rpm
sudo rpm -ivh jdk-8u91-linux-x64-demos.rpm
버전 번호는 다음과 같습니다.8u91위 버전들은 지속적으로 업데이트 되오니 자주 방문해주시기 바랍니다오라클 웹사이트최신 버전을 알아보세요. 딸깍 하는 소리JDK 다운로드버튼이 이쪽으로 갈 거예요페이지최신 버전 번호와 올바른 파일 이름이 표시됩니다.
문서를 다운로드할 수도 있습니다. 실제 링크는 여기에서 찾을 수 있습니다.페이지, 그리고 압축을 푼다(JDK가 이미 설치되어 있다고 가정 /usr/java/jdk1.8.0_91/
):
sudo unzip jdk-8u91-docs-all.zip -d /usr/java/jdk1.8.0_91/ #optional
그런 다음 이 두 명령을 사용하여 올바른 javac 및 java를 선택하십시오. 나는 당신에게 하나의 옵션만 있다고 생각합니다(이 예에서는 내 것이 최신 8u91이 아니기 때문에 jdk1.8.0_74를 보여줍니다).
$ sudo alternatives --config javac
There are 2 programs which provide 'javac'.
Selection Command
-----------------------------------------------
*+ 1 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.fc21.x86_64/bin/javac
2 /usr/java/jdk1.8.0_74/bin/javac
Enter to keep the current selection[+], or type selection number: 2
$
$ sudo alternatives --config java
There are 2 programs which provide 'java'.
Selection Command
-----------------------------------------------
* 1 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.fc21.x86_64/jre/bin/java
+ 2 /usr/java/jdk1.8.0_74/jre/bin/java
Enter to keep the current selection[+], or type selection number: 2
$
답변2
내 링크에 설명된 Java를 가리키도록 대안을 구성해야 할 수도 있습니다.
openjdk에 Oracle Java를 설치하려고 할 때 모든 것이 올바르게 연결되어 있고 올바른 버전의 Java가 실행되고 있는지 확인해야 한다는 것을 알았습니다.
RPM 시스템 시스템을 사용하는 경우 아래 링크의 단계를 사용하여 작동시켰습니다.
다음 Java 명령은 대안이 올바르게 설정되었는지 확인합니다.
java -version
[root@somecomputer thebtm]# 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)
또 다른 측면은 이미 Oracle Java가 설치되어 있고 최신 Java rpm을 다운로드하여 설치한 경우 새 버전의 Java를 가리키도록 대안을 업데이트해야 한다는 것입니다.
[root@somecomputer thebtm]# alternatives --config java
There are 5 programs which provide 'java'.
Selection Command
-----------------------------------------------
* 1 /usr/java/jdk1.8.0_66/bin/java
2 /usr/java/jdk1.8.0_66/jre/bin/java
3 /usr/java/jre1.8.0_77/bin/java
4 /usr/java/jdk1.8.0_77/jre/bin/java
+ 5 /usr/java/jre1.8.0_91/bin/java
Enter to keep the current selection[+], or type selection number: 5
[root@somecomputer thebtm]# 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)