[java] Linux OpenJDK Debian 기반 배포에 대한 JAVA_HOME 환경 변수의 올바른 대상은 무엇입니까?

Windows JAVA_HOME에서 JDK 설치 폴더를 가리켜 야합니다 ( JAVA_HOME/bin모든 실행 파일을 JAVA_HOME/libs포함하고 모든 기본 jar라이브러리를 포함).

Sun의 JDK 번들을 다운로드하여 Linux에 설치하면 동일한 절차입니다.

그러나 Kubuntu의 기본 OpenJDK 패키지를 사용해야합니다. 문제는 모든 실행 파일이 /usr/bin. 그러나 항아리는 /usr/share/java. 동일한 JAVA_HOME폴더에 있지 않기 때문에 Grails에 문제가 있으며 표준 Java 구조를 예상하는 다른 응용 프로그램에 문제가있을 수 있습니다.

  1. 내가 사용하는 경우 :

    JAVA_HOME=/usr
    

    Java 실행 파일을 사용하려는 모든 응용 프로그램과 스크립트는 표준 절차를 사용할 수 있습니다 call $JAVA_HOME/bin/executable. 그러나 항아리가 다른 위치에 있기 때문에 항상 찾을 수있는 것은 아닙니다 (예 : 내가 얻고있는 grails ClassDefNotFound에서 native2ascii).

  2. 반면에 다음을 사용하는 경우 :

    JAVA_HOME=/usr/share/java
    

    자바 실행 파일 (아무도 java, javac등) 찾을 수 없습니다.

그렇다면 JAVA_HOMEDebian 기반 Linux에서 변수 를 처리하는 올바른 방법은 무엇입니까?

도와 주셔서 감사합니다, Luis



답변

마침내 저에게 효과가 있었던 것은 (Grails가 이제 원활하게 작동합니다) 거의 Steve B.가 지적한 것처럼하고 있습니다.

JAVA_HOME=/usr/lib/jvm/default-java

이렇게하면 사용자가 시스템의 기본 JDK를 변경해도 JAVA_HOME계속 작동합니다.

default-java 현재 JVM에 대한 심볼릭 링크입니다.


답변

대안을 사용하여 여러 Java 버전을 관리하는 경우 다음 JAVA_HOME과 같이 symlinked java (또는 javac)를 기반으로을 설정할 수 있습니다 .

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")


답변

표준 Ubuntu 설치는 다양한 Java 버전을 /usr/lib/jvm. javac경로에서 찾을, 자바는 여기에 소프트 링크합니다.

JAVA_HOME환경 변수 를 설정 하고 새 Java가 있는지 확인하는 한 원하는 곳에 Java 버전을 설치하는 데 문제가 없습니다.bin 경로에 .

이를 수행하는 간단한 방법은 Java 홈이 소프트 링크로 존재하도록하는 것입니다. 따라서 버전을 업그레이드하거나 전환하려면 이것이 가리키는 디렉토리 만 변경하면됩니다. 예 :

/usr/bin/java --> /opt/jdk/bin/java,

/opt/jdk --> /opt/jdk1.6.011


답변

일반적으로 JAVA_HOME 환경 변수가 없습니다. 자바는 스스로 설정할 수 있습니다. java java.home 시스템 속성을 사용할 수 있어야합니다.


답변

JAVA_LIB 변수도 설정해보십시오.


답변

JAR 파일을 찾을 수없는 문제가있는 경우 CLASSPATH가 해당 파일의 위치를 ​​포함하도록 설정되어 있는지 확인합니다. 그러나 CLASSPATH는 종종 다른 프로그램에 대해 다르게 설정되어야하며 종종 개별 프로그램에 대해 고유하게 설정되는 것이됩니다.


답변

문제를 해결할 수있는 업데이트 된 답변과 Ubuntu에 Oracle Java 7을 설치하는 일반적인 방법은 여기에서 찾을 수 있습니다. http://www.wikihow.com/Install-Oracle-Java-on-Ubuntu-Linux