在Linux环境下采用压缩包方式安装JDK 13

  • 2019 年 10 月 13 日
  • 筆記

本文地址:https://www.cnblogs.com/oberon-zjt0806/p/11663731.html
可以,转载,出处,格式,懂??

什么是JDK??

好吧如果你不知道这个问题的话我实在是不知道你为什么要装这个东西。

JDK(Java Development Kit)Sun公司(后被Oracle收购)推出的面向对象程序设计语言开发工具包,拥有这个工具包之后我们就可以使用Java语言进行程序设计和开发。

而今天我们要在Linux环境 下对这个东西进行部署以便能够进行开发,并且是以压缩包解压的方式进行安装,之所以不用rpm方式安装主要是为了能够在所有Linux系统上都通用,rpm和deb最多只能在Red Hat和Debian旗下的Linux系统上分别安装,而且还会有互相转换的问题,但是用压缩包就没有这个问题了,尽管相对要繁琐一些

操作系统:CentOS Linux Release 8.0.1905 (Core)
环境:Virtual Box 虚拟机

那我只想让Java的程序能够在我这上运行呢??

如果你实在懒得找或者找不到JRE的安装教程的话,那你权且也可以跟着这个流程一起走下来,保证你的Java程序确实能够运行,只是你的Linux操作系统上会多出来很多你实际上完全不需要的东西。

如果我想安装其他的版本呢??

JDK 8及以下的版本可能与此有所区别,请参考其他专门安装JDK 8的安装过程。
JDK 10以上应该可这个过程大体没有太多区别,不过参考的时候请务必注意有些位置需要换成你当前的版本代号。

你为什么要在Linux上安装呢??你不是更喜欢在Windows平台拿Eclipse做Java开发吗??

你的问题还真是多啊,你说得对,但是在特别需求的情形下,我不得不采取一些“我不喜欢”的行为。
而这个就是一个,因为我需要在Linux平台下部署Hadoop,而新安装的CentOS里面根本没有Java的环境:

[user@localhost /]$ java -version  bash: java: 未找到命令...

Java SE是Hadoop的一个先决条件

而且如果部署好了的话我也可以用Linux做Java开发了岂不美哉??

但是看起来网上的同类的教程非常多啊

我什么时候说过这是一篇教程了??这只是作为我的一次过程记录而已,如果可能的话我也希望它能够成为其他人的参考,而且我也参考了很多人的安装过程,最终我成功了。

站在了无数巨人的肩膀上。

好了不多说了,那就开始吧。

嗯,确实如此。首先需要安装一个Linux的系统没必要是CentOS,也可以是Ubuntu、Fedora 、Debian什么的随你喜欢,用不用GUI也无所谓,因为即使我安装了一个带有GUI的CentOS,我的安装过程实际上是用bash指令完成的。
在实际进行安装之前,我必须提前说明

和Windows不一样,Linux系统是对大小写敏感的,也就是说/Somewhere/a.zip/somewhere/A.zip并不在同一目录下,也不是同一个文件名,这点请务必注意!!!
下文中出现的所有shell指令的真正内容都是从$之后开始的。

至于你是实体机还是虚拟机这个区别应该不大,你可以实际拿个U盘去装也可以下个VMWare或者Virtual Box什么的。这里我不做说明。

下载JDK压缩包

总之,CentOS 8我安装好了,当然你可能用的是Ubuntu 16.04什么的这个就随便了,接下来要从网络上下载一个JDK13的压缩包(jdk-13_linux-x64_bin.tar.gz

这里假设你无论是GUI下载还是wget下载方式,你都已经把压缩包下载至/usr/download目录下了

如果你的Linux系统有GUI并且系统预装了Firefox,那么你可以像在Windows里一样拿Firefox火速冲到JDK的下载地址,像这样:
Firefox Downloading J

如果没有GUI的话,你可以用wget指令:

[user@localhost /usr/lib/jvm/jdk-13]$ su root # 整个过程需要提升为root权限进行,因为普通用户不可以在usr、etc文件夹及它们的子文件夹下进行修改  [root@localhost /]$ mkdir /usr/download # 如果你没有这个目录的话就先键入这个指令,否则直接看下一句  [root@localhost /]$ cd /usr/download  [root@localhost /usr/download]$ wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "https://download.oracle.com/otn-pub/java/jdk/13+33/5b8a42f3905b406298b72d750b6919f6/jdk-13_linux-x64_bin.tar.gz"

注意:因为Oracle官网要求必须登录Oracle账号才能下载JDK等内容,所以直接键入

wget https://download.oracle.com/otn-pub/java/jdk/13+33/5b8a42f3905b406298b72d750b6919f6/jdk-13_linux-x64_bin.tar.gz

下载出来的jdk-13_linux-x64_bin.tar.gz只有5KB(实际上应当是180MB),那个东西根本就不是压缩包而是一个请求页面而已。所以如果通过命令行的方式下载只能通过上面的方式进行下载
下载好了之后查看一下jdk-13_linux-x64_bin.tar.gz的属性:

[root@localhost /]$ ls -al jdk-13_linux-x64_bin.tar.gz  -rw-rw-r--. 1 user user 188711447 9月  19 11:13 jdk-13_linux-x64_bin.tar.gz

在一些Linux操作系统下,此时文件名的位置被显示为红色,意思是说:

这是一个压缩文件

所以不必担心,这不是错误,你可以继续进行。

如果你发现188711447(约180MB)被5307(约5KB)(也就是说文件大小严重不一致)替代了意味着你的下载链接是错误的,请详细阅读上文“注意”里面的内容然后用rm jdk-13_linux-x64_bin.tar.gz删掉这个文件并重新下载,如果大小不一致但是差不多大有可能是你下载了其他的版本,也有可能是压缩包损坏了,如果是后者请重新下载。

解压JDK安装包中的文件

接下来使用tar指令解压压缩包,解压至/usr/lib/jvm目录下:

[root@localhost /usr/download]$ mkdir /usr/lib/jvm  [root@localhost /usr/download]$ tar -xf jdk-13_linux-x64_bin.tar.gz -C /usr/lib/jvm  #-- 这一步请耐心等待一会,需要一段时间  [root@localhost /usr/download]$ cd /usr/lib/jvm  [root@localhost /usr/lib/jvm]$ ls  jdk-13

你会看到在/usr/lib/jvm下存在一个叫做jdk-13的文件夹,我们进去看看

[root@localhost /usr/lib/jvm]$ cd jdk-13  [root@localhost /usr/lib/jvm/jdk-13]$ ls  bin  conf  include  jmods  legal  lib  man  release

至此,JDK的所有组件都已经备齐了,接下来要进行配置。

添加环境变量

注意:这里要求使用VIM

  • 如果你会使用VIM
    • 啊,那没问题,继续吧
  • 如果你不会使用VIM
    • 如果你使用的Linux系统带有GUI界面
      • 你可以使用预装的文本编辑器进行编辑,就像在Windows里面使用记事本那样。
    • 否则
      • 如果你想了解VIM
        • 找其他人的教程看看VIM的基本操作方法
      • 否则,如果你有值得信赖且能力够强的朋友的话
        • 找他帮你弄弄
      • 否则
        • emmm……我在此由衷地替您感到悲哀

在Windows下使用安装程序安装的时候一般来说环境变量是被自动配置好的,但是很可惜我们现在是手动安装,JDK的工作依赖于大量的环境变量中的路径。

好像Oracle系的软件都是这副死亚子,比如Oracle DB……

JDK需要这样几个环境变量:

  • JAVA_HOME :Java的主目录,你把压缩包包解压之后得到的jdk-13文件夹所在的位置(并且包含jdk-13自身)
  • JRE_HOME:JRE的主目录,JRE是运行Java应用程序的最基本软件环境,所以如果你只是希望Java的程序能够运行的的话你完全不需要安装JDK,尽管JDK里面带有JRE。
  • CLASSPATH:Java提供的标准或公共类库的位置
  • PATH:这是系统的环境变量,这个东西只是告知系统你的Java开发环境被安装在了什么位置,这个东西使你在任意目录下都可以直接执行Java的开发工具比如javac等,直接键入javac就可以执行而不需要再重新键入/usr/lib/jvm/jdk-13/bin/javac
    Linux系统下的环境变量被存储于若干个文件里,其作用范围有所不同,有的只作用于当前用户,而有的作用于全体用户。而我们这里的环境直接对全体用户生效就可以了(因为除了root就我一个用户user),所以,这里我们会对/etc/profile进行修改。
    不过我们现在知道JAVA_HOME=/usr/lib/jvm/jdk-13,这个目录意思是说包含了所有和Java运行环境相关的东西,我们看看里面都有什么
[user@localhost /usr/lib/jvm/jdk-13]$ ls  bin  conf  include  jmods  legal  lib  man  release

其中bin是Java所有开发工具(通常是可执行的应用程序)所在的目录,而lib里面则是Java提供的公共类库,当然这个也就是我们在找的CLASSPATH了。
那么,JRE_HOME怎么办呢??
早在JDK 8的时候,安装好的JAVA_HOME下能够找到一个叫做jre的文件夹,但是到JDK 13的时候刚才也看了,哪里有jre呢??

其实不用考虑这个问题,因为新版本的JDK不仅附带JRE,而且把JRE组件直接毁进JDK了,所以JRE_HOME可以直接给成JAVA_HOME就可以了。

因此我们用VIM打开/etc/profile(因为是)进行编辑:

[root@localhost /usr/lib/jvm/jdk-13]$ vim /etc/profile

在这个文件开头加入如下内容:

export JAVA_HOME=/usr/lib/jvm/jdk-13  export JRE_HOME=/${JAVA_HOME}  export CLASSPATH=.:${JAVA_HOME}/libss:${JRE_HOME}/lib  export PATH=${JAVA_HOME}/bin:$PATH

然后:wq保存退出,不过因为只是写在了文件里,这些环境变量并没有被实际的构建到内核中,因此需要手动执行一下这个文件。

[root@localhost /usr/lib/jvm/jdk-13]$ source /etc/profile  [root@localhost /usr/lib/jvm/jdk-13]$ exit #退出root权限

至此,安装过程全部结束,JDK可以正常工作了,我们可以用下面这个指令检验一下:

[user@localhost /usr/lib/jvm/jdk-13]$ java -version  

现在我们可以在Linux系统上使用JDK13进行开发了。

既然装好了,不妨我们试一下吧!

说得对!!我们已经摩拳擦掌了,那就编写一个Java程序测试一下吧!
随便在某个位置建个文件夹编写一个Hello World试试看吧:

[user@localhost /usr/lib/jvm/jdk-13]$ mkdir ~/jsrc  [user@localhost /usr/lib/jvm/jdk-13]$ cd ~/jsrc  [user@localhost ~/jsrc]$ vim Hello.java
/// Hello.java    public class Hello  {      public static void main(String args[])      {          System.out.println("Hello");      }  }
[user@localhost ~/jsrc]$ javac Hello.java  [user@localhost ~/jsrc]$ ls  Hello.class    Hello.java  [user@localhost ~/jsrc]$ java Hello  Hello

Ah, finally …
开心!!

当然,之后我还会同样记录Hadoop的安装过程等等更多的东西,敬请关注!!
以上。