[笔记]我的Linux入门之路 - 03.Java环境搭建

其实ubuntu是自带一个叫openJDK的东西的,是谷歌看Oracle不爽而搞的。不过呢。。。总感觉不太习惯,况且我既然都来Linux了,总是想折腾一把的。

首先先检查下有没有安装java。终端输入java -version,若出现以下字段则说明未安装。

The program ‘java’ can be found in the following packages:
* default-jre
* gcj-4.6-jre-headless
* openjdk-6-jre-headless
* gcj-4.5-jre-headless
* openjdk-7-jre-headless
Try: sudo apt-get install

一、下载

Java SE Development Kit 8 官网

选择对应系统的jdk下载。会发现有rpm和tar.gz两种格式。ubuntu不支持rpm所以下载tar.gz版本。(要安装rpm的包,则要先用alien把rpm转换成deb,这里我用的tar.gz,就讲这个)。

比如我下载在了默认的Downloads文件夹,即/home/xienaoban/Downloads/目录。名字叫jdk-8u121-linux-x64.tar.gz。

二、解压

tar是个打包格式,gz即gzip是种压缩格式。那要安装它就要先解压。先用文件(Files)双击打开这个包看看,没有找到什么setup、install字样的文件,说明是解压即用的那种类型。(如果有install什么的文件就更方便了,就像win下面安装软件的exe一样,或者也可能是个sh脚本)

首先想一个安装路径,路径随意,自己喜欢就好。我选择了/usr/local/lib/java/路径。

系统本身没有java文件夹,所以要先创建个。首先打开终端:

sudo mkdir /usr/local/lib/java

以创建java文件夹(若你选择的路径无需创建则跳过该步骤);

cd ~/Downloads/

定位到jdk下载的目录。“~”相当于“/home/xienaoban”;

sudo tar -zxvf eclipse-inst-linux64.tar.gz -C /usr/local/lib/java

意思是使用管理员权限,使用tar命令的zxvf操作将jdk安装包解压到安装路径。-zxvf中,-z是配合解压.GZ的 ,-x是解开一个包文件,-v显示详细信息,-f是必须的,表示使用归档文件,合并起来意思也很明显了。-C dir参数的作用在于改变工作目录,即改变了解压的路径。

于是就解压好了。可以用ls -l /usr/local/lib/java 查看目录下是否有jdk1.8.0_121目录。(ls:list,列出目录内的文件夹与子目录,-l:显示详细信息),没错的话会找到以下这条(当然时间什么的信息会不同):

drwxr-xr-x 8 uucp 143 4096 12月 13 08:50 jdk1.8.0_121

三、配置环境变量

1.修改bashrc或profile文件

方法有两个,一个是编辑~/.bashrc文件,一个是编辑/etc/profile文件。两者效果一样!网上针对两者的教程都有,任选其一即可!所以一开始搞得我一脸懵逼。我选择了编辑profile文件。

sudo gedit /etc/profile , 用gedit打开profile文件并编辑(用其他文本编辑器如vim也随意),在文末添加如下代码:

export JAVA_HOME=/usr/local/lib/java/jdk1.8.0_121
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

当然,路径如果和我的不一样的话改成自己的安装路径。其实只要改JAVA_HOME就行。网上看到有人四个变量全用的绝对路径,这不好,尽量不要用硬编码,改起来也麻烦。注意CLASSPATH后面是“.:”,我没有写错。

2.设置默认JDK 版本

然后再执行以下五句update-alternatives以设置系统默认JDK 版本(记得修改自己的目录):

# java和javac必须配置
sudo update-alternatives --install /usr/bin/java java /usr/local/lib/java/jdk1.8.0_121/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/local/lib/java/jdk1.8.0_121/bin/javac 300
# 以下可以不配置
sudo update-alternatives --install /usr/bin/jar jar /usr/local/lib/java/jdk1.8.0_121/bin/jar 300
sudo update-alternatives --install /usr/bin/javah javah /usr/local/lib/java/jdk1.8.0_121/bin/javah 300
sudo update-alternatives --install /usr/bin/javap javap /usr/local/lib/java/jdk1.8.0_121/bin/javap 300

其中:每个指令最后的参数300代表着优先级,我看也有教程选择50的。还有java和javac是必须配置的,后面的几条,看到别人的说法是“如果你无聊,也可以把javah等等也给配置上”。。。所以你会发现不同的教程update-alternatives的数量还不一样。这里一并说明下。

参考链接

3.更新config

最后再执行sudo update-alternatives --config javasudo update-alternatives --config javac更新config,当然如果是第一次安装会提示

There is only one alternative in link group java (providing /usr/bin/java): /usr/local/lib/java/jdk1.8.0_121/bin/java
Nothing to configure.

那就不用管了,否则选择你要的版本。

4.配置系统环境变量(可不做)

看到有教程还要“配置系统环境变量”,即在/etc/environment 文件的 末尾添加

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin"
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export JAVA_HOME=/usr/java/jdk
export JRE_HOME=${JAVA_HOME}/jre

但是也有很多教程没有做这一项,我也没做。查了一下区别就是这个步骤是针对整个系统的,而更改profile是针对所有用户的(看上去不一样但实际结果上没啥区别)。所以这个步骤不执行也没有问题。

etc/profile: 此文件为系统的每个用户设置环境信息。当用户登录时,该文件被执行一次,并从 /etc/profile.d 目录的配置文件中搜集shell 的设置。一般用于设置所有用户使用的全局变量。

/etc/bashrc: 当 bash shell 被打开时,该文件被读取。也就是说,每次新打开一个终端 shell,该文件就会被读取。

~/.bash_profile 或 ~/.profile: 只对单个用户生效,当用户登录时该文件仅执行一次。用户可使用该文件添加自己使用的 shell 变量信息。另外在不同的LINUX操作系统下,这个文件可能是不同的,可能是 ~/.bash_profile, ~/.bash_login 或 ~/.profile 其中的一种或几种,如果存在几种的话,那么执行的顺序便是:~/.bash_profile、 ~/.bash_login、 ~/.profile。比如 Ubuntu 系统一般是 ~/.profile 文件。

~/.bashrc: 只对单个用户生效,当登录以及每次打开新的 shell 时,该文件被读取。

此外,修改 /etc/environment 这个文件也能实现环境变量的设置。/etc/environment 设置的也是全局变量,从文件本身的作用上来说, /etc/environment 设置的是整个系统的环境,而/etc/profile是设置所有用户的环境。有几点需注意:

系统先读取 etc/profile 再读取 /etc/environment(还是反过来?)

/etc/environment 中不能包含命令,即直接通过 VAR=”…” 的方式设置,不使用 export 。

使用 source /etc/environment 可以使变量设置在当前窗口立即生效,需注销/重启之后,才能对每个新终端窗口都生效。

参考链接

四、安装完成

输入java -version 可以查看java有没有安装成功。若成功,会跳出以下文字:

java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
上一篇:[Android]Dalvik的BOOTCLASSPATH和dexopt流程


下一篇:【NOIP TG 解方程】