什么是正确的目标JAVA_HOME环境可变为一个Linux们可根据最新的技术提供一些Debian基于分配?

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

在窗户, JAVA_HOME 必须指向JAVA安装的文件夹(使 JAVA_HOME/bin 包含了所有的可执行文件和 JAVA_HOME/libs 包含了所有的默认 jar 库)。

如果我下载太阳的JAVA束并将其安装在Linux,它是同样的程序。

然而,我需要用一个默认们可根据最新的技术提供一些软件包。问题是,所有的可执行文件被放置在 /usr/bin.但瓶子被放置在 /usr/share/java.因为他们不是在同样的 JAVA_HOME 文件夹我有麻烦有多种解决方案以及也许会有麻烦的其他应用程序预期标准的Java结构。

  1. 如果我使用:

    JAVA_HOME=/usr
    

    所有的应用程序和脚本,这要使用任何Java可执行可以使用的标准程序 call $JAVA_HOME/bin/executable.然而,由于罐子是在不同的地方,他们并不总是发现(例如:在杯我得到 ClassDefNotFound 对于 native2ascii).

  2. 另一方面,如果我使用:

    JAVA_HOME=/usr/share/java
    

    没有的可执行文件(java, javac, 等)。 可以找到。

那么,什么是正确的方式处理的 JAVA_HOME 变量Debian基于Linux的?

感谢您的帮助, 路易斯

有帮助吗?

解决方案

什么终于为我工作(技术发展的看法,现在的工作顺利)是这样做几乎像史蒂夫*B已指出:

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

这样,如果用户更改的缺省JAVA的系统, JAVA_HOME 仍然有效。

default-java 是一个符号连接到当前JVM。

其他提示

如果使用替代品来管理多个java版本,可以设置 JAVA_HOME 基于上述,如果java(或javac)这样的:

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

标准Ubuntu安装似乎把各种Java版本 /usr/lib/jvm.的 javac, java你找到你的路径将软链接到这一点。

没问题安装自己的Java version你喜欢的任何地方,只要你设置的 JAVA_HOME 环境变量,并确保有新的Java bin 你的路径上。

一个简单的方法来做到这一点是有Java家的存在,作为一个软链接,以便如果你想要升级或开版本,你只需要更改目录,这一点--例如:

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

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

我通常不具有任何JAVA_HOME环境变量。Java可以设置它本身。内部java.家系统性应用。

试图设置的JAVA_LIB变。

因为我记得,我曾更新java的替代品的脚本,而不是更新替代品。它没有设置JAVA_HOME对我来说是正确的。

如果你有问题罐子文件没有被发现我还能确保你的类路径,设置包括的位置,这些文件。我找到但是这类路径往往需要设置不同的方式用不同的程序和常常结束了是什么设置的唯一一个单独的程序。

更新的答案,将会解决你的问题还只是一般的好如何安装Oracle Java7月Ubuntu可以在这里找到: http://www.wikihow.com/Install-Oracle-Java-on-Ubuntu-Linux

我发现了类似的问题与们可根据最新的技术提供一些-6-java运行环境和们可根据最新的技术提供一些-6-java运行环境-无头的包Ubuntu。

我的问题是解决清除们可根据最新的技术提供一些-6-java运行环境和们可根据最新的技术提供一些-6-java运行环境-无头的包装和重新安装。替代办法是仅更新一个新的安装们可根据最新的技术提供一些-6-java运行环境和们可根据最新的技术提供一些-6-java运行环境-无头的软件包。

下面是一样的安装后清除:

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 运行设定链接的各种Java的二进制文件。

在此之后安装,也有链接 /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

让我们contast这个安装没有清除。

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的二进制文件 /var/lib/dpkg/alternatives, ,没有链接在 /etc/alternatives, 和没有链接 /usr/bin.

删除的文件 /var/lib/dpkg/alternatives 也休息 update-java-alternatives.

Ubuntu12.04这工作...

JAVA_HOME=/usr/lib/jvm/java-6-们可根据最新的技术提供一些-i386/java运行环境

作为更新包用户,替代品设置的当前java目录 /usr/java/default

所以你必须设置你的JAVA_HOME to/usr/java/default总是有替代品的电流选择在你的类路径

禾田!

我正确的目标一直到下载它从太阳和只要安装这种方式。然后你知道的究竟是什么目录一切顺利。

但如果你愿意坚持使用奇怪的方式,Debian安装了,我的最好的猜想是父目录的正上方java和javac二进制位置。

(由于当指定它在你的路径元JAVA_HOME/bin) (所以你的情况这将是...$JAVA_HOME/分享美元JAVA_HOME将/usr?)

嗯,那听起来并不正确的...

我感兴趣的是听到这个问题的答案呢!

请看看有什么新替代品的命令(它有一个很好的男人...).

不久-发生什么事当您有java-太阳-1.4和java-opensouce-1.0...哪个"java"?它debian"/usr/bin/java"是象征性的链接和"/usr/bin/java-太阳-1.4"替代"/usr/bin/java"

编辑:正如理查德所说的, update-alternatives 是不够的。实际上,你需要使用 update-java-alternatives.更多信息:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top