특정 프로세스의 Java 환경을 전환하는 방법은 무엇입니까?

특정 프로세스의 Java 환경을 전환하는 방법은 무엇입니까?

저는 직장에서 openjdk를 사용하지만 때로는 oracle의 jre 또는 심지어 oracle의 jre의 특정 버전이 필요할 때도 있습니다. 내가 아는 한, JAVA_HOME값 및 /usr/bin/java/또는 /etc/alternatives/java링크 대상을 업데이트해야 합니다. 특정 프로세스에 대해 임시적으로 이러한 변경을 수행하는 스마트하고 안전하며 쉬운 방법이 있습니까? 감사합니다! (나는 데비안 리눅스 불안정한 저장소를 사용하고 있습니다)

답변1

특정 프로세스에 대해 임시적으로 이러한 변경을 수행하는 스마트하고 안전하며 쉬운 방법이 있습니까?

이와 같은 환경 변수는 $JAVA_HOME상속되며 시스템 전역이 아닙니다. 따라서 특정 방식으로 설정하면 해당 프로세스에만 적용되고, 내보내면 생성되는 모든 프로세스에 적용됩니다.

여기서 프로세스는 셸 인스턴스입니다. 명령줄에서 이 작업을 수행하거나 다음과 같이 만들 수 있습니다.

#!/bin/sh

PATH=/opt/oracle/java/bin:$PATH
export $PATH
exec whatever.jar

이것이 어떻게 작동하는지 잘 모르는 경우 $PATH디렉토리를 순서대로 검사하므로 이 경우 /opt/oracle/java/bin다른 것보다 먼저 검색이 수행되고 java필요할 경우 거기에 있는 디렉토리가 사용됩니다.

.jar실행할 파일 을 지정하기 위해 매개변수를 사용하기 위해 호출할 때 이를 지정할 수 있으며 .class, 사용할 Java 설치에 대한 일부 단축 매개변수(예 if [[ $1 == 2 ]]; then PATH=/opt/oracle2/java/bin...: .

이는 $PATH(그리고 $JAVA_HOME그렇게 하는 경우에도) 스크립트와 스크립트가 시작하는 모든 항목에만 적용됩니다.

작업 중인 경우 export하나의 터미널에서 변수를 사용할 수 있으며 해당 변수는 해당 터미널에만 계속 적용됩니다. JDK가 설치된 경우 등은 bin동일한 디렉토리에 포함됩니다 javac.

관련 정보