Ubuntu上的Java安装问题

Ubuntu上的Java安装问题,java,linux,ubuntu,Java,Linux,Ubuntu,尝试在我的新Ubuntu系统上安装Java(JDK 6)时出现了一些bizarro错误。这是我第一次使用任何风格的Linux,因此我确信这是一个用户问题(权限或其他) 我直接从Oracle的站点下载了BIN文件(64位Linux的JavaSE6U23)。默认为下载到/home/myUserName/Downloads 从那里我将文件移动到/opt/java,这是我创建的一个目录,因为(作为一个Linux新手)作为java应该去的目录是有意义的 然后,我运行以下2个命令,每个我在网上找到的用于运行

尝试在我的新Ubuntu系统上安装Java(JDK 6)时出现了一些bizarro错误。这是我第一次使用任何风格的Linux,因此我确信这是一个用户问题(权限或其他)

我直接从Oracle的站点下载了BIN文件(64位Linux的JavaSE6U23)。默认为下载到/home/myUserName/Downloads

从那里我将文件移动到/opt/java,这是我创建的一个目录,因为(作为一个Linux新手)作为java应该去的目录是有意义的

然后,我运行以下2个命令,每个我在网上找到的用于运行BIN的指令:

chmod +x jdk-6u23-linux-x64.bin
sudo ./jdk-6u23-linux-x64.bin
现在,在我的/opt/java目录中,我看到了BIN文件和jdk1.6.0_23目录,经过检查,它们似乎完好无损

但是当我打开一个新终端并运行java-version时,我得到:

程序“java”可以在以下软件包中找到:
-gcj-4.4-jre-headless
-gcj-4.5-jre-headless
-openjdk-6-jre-headless
尝试:sudo-apt-get-install

这是怎么回事

(1) 我尝试将/opt/java设置为我的java目录是错误的吗?
(2) 我是否运行了错误的命令?
(3) 我的机器上是否安装了Java 1.6.0_23?
(4) 那些gcj xxx无头目标是什么


谢谢你的意见

当您可以简单地:

sudo apt-get install sun-java6-jdk

如果没有任何特殊的原因需要从站点获取特定版本,那么应该使用
apt-get
,因为它将处理所有内容,如
PATH
变量等。

您只需将JDK二进制文件放在一个目录中即可。尽管按照惯例通常使用/opt/java或/opt/jdk,但这些目录并不是系统自动识别的目录


但是,您可以更新PATH环境变量,将/opt/java/bin dir或symlink(ln-s)/opt/java/bin/java包含在您的PATH中的一个目录中,如/usr/bin/

尝试将/opt/java设置为我的java目录是错误的吗?

不是真的。许多Java开发人员安装多个JDK安装,并始终使用
/opt/jdk1.6.0_23
或类似路径。您下载的
bin
文件不是安装程序,只是提取器。它不会将
java
二进制文件安装到系统文件夹中,如
/bin

我通常下载JDK并从我的主文件夹中执行它,然后将其移动到/opt并执行chown

我是否运行了错误的命令?

不是真的。如果您想安装一个单独的JDK,那么就正确地安装了它。如果需要系统集成,最好使用特定于发行版的软件包,例如通过
aptitude install sun-java6-jdk
或类似方式安装的软件包

您下载的
bin
更加灵活,因为我可以使用它在同一个系统上安装多个Java版本。我知道这是你在Linux机器上不经常做的事情

如果要在命令行上使用
java
二进制文件,则必须手动设置
PATH
java\u HOME
环境变量。我认为在Ubuntu上是/etc/environment或/etc/profile之类的

我的机器上是否安装了Java 1.6.0\u 23?

不是真的。见以上答案

那些gcj xxx无头目标是什么


GCJ是用于Java的Gnu编译器。显然,它包括一个Java开发工具包和一个Java运行时环境。

您从Sun/Oracle安装的JDK是原始JDK。“无头”JDK是开源的替代方案。 运行JDK BIN文件时,它只提取归档文件。当您输入java-version命令时,它找到了FOSSJava,而不是您在/opt中提取的java。正如其他人提到的,开发人员保留了JDK的多个版本。如果希望使用Oracle的Java,则需要将/usr/bin/Java链接到/opt/jdk1.6.0_23/bin/Java

sudo ln -s /usr/bin/java /opt/jdk1.6.0_23/bin/java
为了实现这一点,应该首先将现有java命令与“headless”JDK断开链接。(在执行上一个命令之前,请执行以下操作。)

这假设在/usr/bin中有一个名为java的链接或可执行文件。请使用which命令确保

which java

要将新路径名添加到现有路径变量,需要在Terminal中键入以下内容:

PATH=`echo $path`:/your/new/path export PATH PATH=`echo$PATH`:/your/new/PATH 导出路径 如果丢失了原始PATH变量,可以通过输入以下内容进行恢复:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games export PATH 路径=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games 导出路径尝试:


这样,您的linux就可以在
/usr/bin

中找到java和javac。请按照以下步骤安装oracle java:

下载最新的Java SE SDK版本

解除对归档文件的存档

tar -xzvf jdk-8-linux-x64.tar.gz
mv jdk1.8.0 /opt 
cd /opt/jdk1.8.0
此步骤将下载的Java版本注册为备选版本,并将其切换为默认版本:

update-alternatives --install /usr/bin/java java /opt/jdk1.8.0/bin/java 1
update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0/bin/javac 1
update-alternatives --install /usr/lib/mozilla/plugins/libjavaplugin.so mozilla-javaplugin.so /opt/jdk1.8.0/jre/lib/amd64/libnpjp2.so 1
update-alternatives --set java /opt/jdk1.8.0/bin/java
update-alternatives --set javac /opt/jdk1.8.0/bin/javac
update-alternatives --set mozilla-javaplugin.so /opt/jdk1.8.0/jre/lib/amd64/libnpjp2.so
测试

java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
检查您现在运行的Java版本

java -version
输出

java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
要查看浏览器插件,请浏览并单击“我有Java吗?”


Ref:

对于一个“普通”用户来说,你是对的,但作为一名Java开发人员,你有时需要一个非常特定的版本来测试你的软件,比如Java 6 update 20或23等等@arjan:作为一名Java开发人员,我从来都不需要比大写版本号更具体的东西。尽管如此,我应该说我主要是开发web应用程序,并且总是使用最低的通用语言功能。通常在为自己的公司开发的web应用程序中,目标服务器包含非常特定的Java版本。为了从JDK版本之间的微小更改中排除愚蠢的错误,我们通常在开发站使用与服务器上完全相同的版本。当然,我们经常更新服务器的Java
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)