무엇이 올바른 대상에 대한 JAVA_HOME 환경 변수에 대한 리눅스 오픈 jdk Debian-based distribution?

StackOverflow https://stackoverflow.com/questions/663658

문제

Windows, JAVA_HOME 해야 합니다 JDK 설치 폴더(록 JAVA_HOME/bin 포함되는 모든 실행파일과 JAVA_HOME/libs 이 모두 포함 기본 jar 라이브러리)입니다.

다운로드하는 경우 태양 JDK 뭉치고 설치합 리눅스에서,그것은 동일한 절차입니다.

그러나 나를 사용해야학의 기본 소프트웨어 패키지입니다.문제는 모든 실행파일에 배치됩 /usr/bin.그러나 항아리에 배치 /usr/share/java.하지 않기 때문에서 동일한 JAVA_HOME 폴더에 문제가 있습니다배하고 아마가 될 것입니다 문제는 다른 응용 프로그램과 기대하는 표준 Java 구조입니다.

  1. 내가 사용하는 경우:

    JAVA_HOME=/usr
    

    모든 응용 프로그램과 스크립트를 사용하려는 모든 Java 실행 파일을 사용할 수 있는 표준 절차 call $JAVA_HOME/bin/executable.그러나,이 항아리는 다른 장소에서,그들은 항상(예를 들어:에배 나 ClassDefNotFoundnative2ascii).

  2. 다른 한편으로는 경우,사용:

    JAVA_HOME=/usr/share/java
    

    도 Java 실행파일(java, javac, 등.) 을 찾을 수 있습니다.

그래서 무엇이 올바른 방법의 취급 JAVA_HOME 변수에 Debian-based Linux?

당신의 도움을 주셔서 감사합니다, 루이스

도움이 되었습니까?

해결책

마침내 나를 위해 일한 것은 (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::")

표준 우분투 설치는 다양한 Java 버전을 /usr/lib/jvm. 그만큼 javac, 당신이 당신의 경로에서 찾은 Java는 이것에 소프트 링크를합니다.

설정하는 한 자신만의 자바 버전을 설치하는 데 문제가 없습니다. JAVA_HOME 환경 변수 및 새로운 Java가 있어야합니다. bin 당신의 길에.

이를 수행하는 간단한 방법은 Java Home이 SoftLink로 존재하는 것입니다. 따라서 버전을 업그레이드하거나 전환하려면이 가리키는 디렉토리 만 변경하면됩니다.

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

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

나는 보통 java_home 환경 변수가 없습니다. Java는 자체적으로 설정할 수 있습니다. 내부 Java Java. Home 시스템 속성을 사용할 수 있어야합니다.

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

내가 기억하는 한, 나는 업데이트 대출 대신 Update-Java-Agternatives 스크립트를 사용했습니다. 그리고 그것은 Java_home을 올바르게 설정했습니다.

와 관련된 문제가 발생한 경우 JAR 파일을 찾을 수 없다 나는 또한 위의 클래스 경로로 설정의 위치를 포함한 파일.을 찾을 수 있습니까 그러나 그는 클래스 경로를 자주 할 필요가 설정을 다르게 다른 프로그램에 대해 자주되는 끝을 설정하는 고유한 개별적인 프로그램입니다.

문제를 해결하는 업데이트 된 답변과 Ubuntu에 Oracle Java 7을 설치하기위한 일반적인 좋은 방법 만 있습니다. http://www.wikihow.com/install-oracle-java-on-ubuntu-linux

우분투에서 OpenJDK-6-JRE 및 OpenJDK-6-jre-Headless 패키지와 비슷한 문제를 발견했습니다.

내 문제는 OpenJDK-6-JRE 및 OpenJDK-6-jre-Headless 패키지를 제거하고 다시 설치하여 해결되었습니다. 대안은 OpenJDK-6-JRE 및 OpenJDK-6-jre-Headless 패키지의 새로운 설치에만 업데이트됩니다.

아래는 제거 후 설치 샘플입니다.

aptitude purge openjdk-6-jre openjdk-6-jre-headless # to ensure no configuration exists
aptitude install --without-recommends openjdk-6-jre # Installing without some extras
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
The following NEW packages will be installed:
  ca-certificates-java{a} java-common{a} libavahi-client3{a} libavahi-common-data{a} libavahi-common3{a} libcups2{a} libflac8{a} libgif4{a} libnspr4-0d{a} libnss3-1d{a} libogg0{a} libpulse0{a} libsndfile1{a} libvorbis0a{a} libvorbisenc2{a} libxi6{a} libxtst6{a}
  openjdk-6-jre openjdk-6-jre-headless{a} openjdk-6-jre-lib{a} tzdata-java{a}
The following packages are RECOMMENDED but will NOT be installed:
  icedtea-6-jre-cacao icedtea-netx ttf-dejavu-extra
0 packages upgraded, 21 newly installed, 0 to remove and 119 not upgraded.
Need to get 0B/34.5MB of archives. After unpacking 97.6MB will be used.
Do you want to continue? [Y/n/?]
Writing extended state information... Done
Selecting previously deselected package openjdk-6-jre-lib.
(Reading database ... 62267 files and directories currently installed.)
Unpacking openjdk-6-jre-lib (from .../openjdk-6-jre-lib_6b24-1.11.5-0ubuntu1~10.04.2_all.deb) ...
...
Processing triggers for man-db ...
Setting up tzdata-java (2012e-0ubuntu0.10.04) ...
...
Setting up openjdk-6-jre-headless (6b24-1.11.5-0ubuntu1~10.04.2) ...
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/java to provide /usr/bin/java (java) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/pack200 to provide /usr/bin/pack200 (pack200) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/rmid to provide /usr/bin/rmid (rmid) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/unpack200 to provide /usr/bin/unpack200 (unpack200) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/orbd to provide /usr/bin/orbd (orbd) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/servertool to provide /usr/bin/servertool (servertool) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/tnameserv to provide /usr/bin/tnameserv (tnameserv) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode.
Setting up openjdk-6-jre (6b24-1.11.5-0ubuntu1~10.04.2) ...
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/policytool to provide /usr/bin/policytool (policytool) in auto mode.
...

당신은 위에서 볼 수 있습니다 update-alternatives 다양한 자바 바이너리에 대한 링크를 설정하기 위해 실행됩니다.

이 설치 후 링크도 있습니다 /usr/bin, 링크 /etc/alternatives, 각 바이너리에 대한 파일 /var/lib/dpkg/alternatives.

ls -l /usr/bin/java /etc/alternatives/java /var/lib/dpkg/alternatives/java
lrwxrwxrwx 1 root root  40 2013-01-16 14:44 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk/jre/bin/java
lrwxrwxrwx 1 root root  22 2013-01-16 14:44 /usr/bin/java -> /etc/alternatives/java
-rw-r--r-- 1 root root 158 2013-01-16 14:44 /var/lib/dpkg/alternatives/java

제거하지 않고 설치하는 것과 함께 이것을 봅시다.

aptitude remove openjdk-6-jre
aptitude install --without-recommends openjdk-6-jre
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
The following NEW packages will be installed:
  ca-certificates-java{a} java-common{a} libavahi-client3{a} libavahi-common-data{a} libavahi-common3{a} libcups2{a} libflac8{a} libgif4{a} libnspr4-0d{a} libnss3-1d{a} libogg0{a} libpulse0{a} libsndfile1{a} libvorbis0a{a} libvorbisenc2{a} libxi6{a} libxtst6{a}
  openjdk-6-jre openjdk-6-jre-headless{a} openjdk-6-jre-lib{a} tzdata-java{a}
The following packages are RECOMMENDED but will NOT be installed:
  icedtea-6-jre-cacao icedtea-netx ttf-dejavu-extra
0 packages upgraded, 21 newly installed, 0 to remove and 119 not upgraded.
Need to get 0B/34.5MB of archives. After unpacking 97.6MB will be used.
Do you want to continue? [Y/n/?]
Writing extended state information... Done
Selecting previously deselected package openjdk-6-jre-lib.
(Reading database ... 62293 files and directories currently installed.)
Unpacking openjdk-6-jre-lib (from .../openjdk-6-jre-lib_6b24-1.11.5-0ubuntu1~10.04.2_all.deb) ...
...
Processing triggers for man-db ...
...
Setting up openjdk-6-jre-headless (6b24-1.11.5-0ubuntu1~10.04.2) ...

Setting up openjdk-6-jre (6b24-1.11.5-0ubuntu1~10.04.2) ...
...

보시다시피, update-alternatives 트리거되지 않습니다.

이 설치 후 Java Binaries에 대한 파일이 없습니다. /var/lib/dpkg/alternatives, 링크가 없습니다 /etc/alternatives, 그리고 링크가 없습니다 /usr/bin.

파일을 제거합니다 /var/lib/dpkg/alternatives 또한 깨진 update-java-alternatives.

우분투 12.04 이것은 효과가 있습니다 ...

java_home =/usr/lib/jvm/java-6-openjdk-i386/jre

Fedora 사용자의 업데이트로 대안은 현재 Java 디렉토리를/usr/java/default로 설정했습니다.

그래서 당신은 당신의 classpath에서 항상 대안 선택을 위해 java_home을/usr/java/default로 설정해야합니다.

HTH!

내 올바른 목표는 항상 태양에서 다운로드하고 그렇게 설치하는 것이 었습니다. 그런 다음 모든 것이 어떤 디렉토리에 들어가는 지 정확히 알 수 있습니다.

그러나 데비안이 설치하는 이상한 방법을 고수하고 싶다면 Java와 Javac Binaries 바로 위의 부모 디렉토리가 가장 좋은 추측입니다.

(당신이 당신의 경로에서 그것을 지정할 때 그것은 $ java_home/bin입니다.)

어, 그건 제대로 들리지 않아 ...

나는 이것에 대한 답을 듣고 싶다!

업데이트 대조 명령이 무엇을하는지 확인하십시오 (좋은 사람이 있습니다 ...).

곧-Java-Sun-1.4와 Java-Opensouce-1.0이있을 때 어떻게됩니까? It Debian "/usr/bin/java"는 기호 링크이며 "/usr/bin/java-sun-1.4"는 "/usr/bin/java"의 대안입니다.

편집 : Richard가 말했듯이 update-alternatives 충분하지 않다. 실제로 사용해야합니다 update-java-alternatives. 추가 정보 :

https://help.ubuntu.com/community/java

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top