[笔记]我的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 java 与sudo 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)
[笔记]我的Linux入门之路 - 03.Java环境搭建的更多相关文章
- [笔记]我的Linux入门之路 - 04.Eclipse安装
首先,要安装ecliose自然是先要有Java环境.在上一篇已经安装好了,不再赘述. 一.下载 Eclipse官网 下载下来的文件":eclipse-inst-linux64.tar.gz ...
- [笔记]我的Linux入门之路 - 01.Ubuntu安装
最近学机器学习,感觉matlab/octave用的人不多,想改用python.于是开始学python,辛辛苦苦学会了自己装环境和装第三方库,结果发现scipy库竟然没有win版本!于是想着那我得装个l ...
- [笔记]我的Linux入门之路 - 02.***-Qt5配置
作为一个学习中的程序员,查wiki等,***肯定是刚需.况且没有它很多东西都下不下来.我在windows环境下使用的是shadowsocks,那么在linux下也使用它. 一.SS版本 SS版本众多, ...
- [笔记]我的Linux入门之路 - 05.Eclipse的Python开发环境搭建与Numpy、Scipy库安装
一.Python环境 直接终端查询下python安装没:python --version Python 2.7.12 Ubuntu竟然已经装了Python2.7,那就好说了.不然自己装和装jdk差不多 ...
- Java从入门到放弃——01.Java 环境搭建
本文目标: 下载与安装JDK 配置Java环境 1.JDK9下载: 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jav ...
- opencv笔记1:opencv的基本模块,以及环境搭建
opencv笔记1:opencv的基本模块,以及环境搭建 安装系统 使用fedora22-workstation-x86_64 安装opencv sudo dnf install opencv-dev ...
- 【转】Xamarin.Android 入门之:Xamarin+vs2015 环境搭建
Xamarin.Android 入门之:Xamarin+vs2015 环境搭建 一.前言 此篇博客主要写了如何使用搭建xamarin开发的环境,防止我自己万一哪天电脑重装系统了,可以直接看这篇博客 ...
- Linux配置mysql (centos配置java环境 mysql配置篇 总结四)
♣安装的几种方法和比较 ♣配置yum源 ♣安装mysql ♣启动mysql ♣修改密码 ♣导入.sql文件 ♣缓存设置 ♣允许远程登录(navicat) ♣配置编码为utf8 1.关于Linux系统 ...
- Linux配置tomcat (centos配置java环境 tomcat配置篇 总结三)
♣下载安装tomcat7 ♣设置启动和关闭 ♣设置用户名和密码 ♣发布java web项目 声明:这篇教程是建立在前两篇教程的基础上的,所以,还没安装工具和jdk,可以先看这个系列的前面两篇(去到文末 ...
随机推荐
- 兔子生娃问题---函数递归应用--c语言实现
事情是这样的:在很久很久以前....有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列:1, 1 ...
- MySQL---事务知识,你搞明白没有?
MySQL - 事务 在学习事务这一概念前,我们需要需要构思一个场景 场景构思 假设该场景发生于一个银行转账背景下,月中,又到了发工资的日子.潭州教育科技集团打算给Tuple老师发放一个月的工资.(此 ...
- 浅谈java类集框架和数据结构(2)
继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主 ...
- Sass实战 sass官网
Sass实战 sass官网 1.相关视频教程:http://pan.baidu.com/s/1eSl8bUa 1.1我的项目源码:http://pan.baidu.com/s/1dFmqbyp 1.2 ...
- js 操作属性
操作属性: 对象.setAttribute('属性名','值'); - 添加属性 对象.getAttribute('属性名'); - 获取属性值,如无此属性,那么返回null 对象.removeAtt ...
- CSS核心属性
学习目标 1.css浮动属性详解 2.Css文本属性 3.Css列表属性 4.Css背景属性 5.Css边框属性 一.Css浮动属性详解 无论多么复杂的布局,其基本出发点均是:"如何在一行显 ...
- iptables初探
一,前言 本来想起个名字叫做"小白都是怎么学习iptables的?"或者"你为什么还不了解iptables?"等等,就像简书上的头条文章,虽然被说成" ...
- rancher api key
rancher将docker容器的界面化做的很好了,但是我们有时间需要在别的地方查看容器的一些信息,怎么办呢? rancher自己提供的有api 点击api查看 我们能够查看到该容器的一些信息,实际上 ...
- 看Lucene源码必须知道的基本概念
终于有时间总结点Lucene,虽然是大周末的,已经感觉是对自己的奖励,毕竟只是喜欢,现在的工作中用不到的.自己看源码比较快,看英文原著的技术书也很快.都和语言有很大关系.虽然咱的技术不敢说是部门第一的 ...
- 使用Jersey实现图片服务器与应用服务器分离
现在模拟一下Jersey从客户端发送图片到服务器. 1.Tomcat准备 (1)解压一个新的Tomcat作为图片服务器,然后修改端口号(有3处). (2)然 ...