Linux学习-89-JDK下载安装(rpm方式)

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 Linux学习-89-JDK下载安装(rpm方式),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

17.19 JDK下载安装(rpm方式)

  • linux系统上jdk安装方式比较多,最简单的便是yum安装,可以使用以下步骤来安装:
#首先先检查是否已经安装JDK
[root@CncLucZK ~]# rpm -qa |grep java

[root@CncLucZK ~]# rpm -qa |grep jdk //查看安装的jdk版本

[root@CncLucZK ~]# rpm -qa |grep gcj
#没有输出信息表示没有安装
#如果已经安装可以使用指令:批量卸载所有带有Java的文件   
[root@CncLucZK ~]# rpm -qa | grep java | xargs rpm -e --nodeps 

#首先检索包含java的列表如下图,版本是openjdk版本
[root@CncLucZK ~]# yum list java*

#自动安装jdk1.8的所有文件,且不需要进行环境变量配置
[root@CncLucZK ~]# yum -y install java-1.8.0-openjdk* 

使用命令检查是否安装成功
[root@CncLucZK ~]# java -version

在这里插入图片描述

  • JDK的下载可以选择rpm包也可以选择tar.gz包,区别是tar.gz包可以指定安装位置,之后的环境变量配置步骤是一样的,以下是二者的wget地址。这种方式的安装相对yum安装步骤多一点,不同的是yum安装的是openjdk.
参数#下载jdk8.rpm
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
#下载jdk8.tar.gz包,里面包含src源码
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz

限于版权,Linux发行版并没有包含官方版的Oracle JDK,必须自己从官网上下载安装。Oracle官网用Cookie限制下载方式,使得眼下只能用浏览器进行下载,使用其他方式可能会导致下载失败。但还是有其他方式的这里就不说明了,使用wget命令直接将jdk下载到/usr/local/src。

  • 参数说明:
    • wget为:下载方式
    • –no-check-certificate:用于禁止检查证书
    • –no-cookies:用于禁用Cookies
    • –header=header-line:用于定义请求头信息
    • http…即为jdk1.8下载链接
#进入/usr/local/src目录
[root@VM-0-3-centos src]# cd /usr/local/src
#下载安装包
[root@VM-0-3-centos src]# wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
#查看文件
[root@VM-0-3-centos src]# ll -l
total 357772
-rw-r--r--. 1 root root 169983496 Mar 16  2017 jdk-8u131-linux-x64.rpm
-rw-r--r--. 1 root root 185540433 Mar 16  2017 jdk-8u131-linux-x64.tar.gz
#发现两文件都没有执行权限,需要授权 755 / +x 两种方式
[root@VM-0-3-centos src]# chmod 755 jdk-8u131-linux-x64.rpm
[root@VM-0-3-centos src]# ll -l
total 357772
-rwxr-xr-x. 1 root root 169983496 Mar 16  2017 jdk-8u131-linux-x64.rpm
  • 执行rpm命令安装:
[root@VM-0-3-centos src]# rpm -ivh jdk-8u131-linux-x64.rpm
  • 如果出现如下提示表示成功!安装位置在/usr/java文件夹,已经生成了jdk1.8.0_131文件夹
#查看是否安装成功:
[root@VM-0-3-centos src]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
  • 之后配置环境变量,修改/etc/profile 文件,在文件末尾添加以下命令:
 #JAVA_HOME路径就是jdk的安装目录
 export  JAVA_HOME=/usr/java/jdk1.8.0_131
 #环境变量是用来指定Java程序搜索类的路径的
 export  CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 export  PATH=$PATH:$JAVA_HOME/bin
  • 保存退出后,执行source /etc/profile 让上面的配置生效.source 命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。

  • 这时候java运行环境已经搭建完毕

测试:在/usr/java/jdk1.8.0_131目录下建一个test目录,建一个HelloWorld.java类,经过javac xxx.java编译源代码,运行java xxx

#进入java目录
[root@VM-0-3-centos ~]# cd /usr/java
#进入test目录
[root@VM-0-3-centos ~]# mkdir test
#创建HelloWorld.java源文件
[root@VM-0-3-centos test]# touch HelloWorld.java
#编码
[root@VM-0-3-centos test]# vim HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello world!");
    }
}
#编译,注意这个类最好别import其他的类,不然找不到这些导入的类
[root@VM-0-3-centos test]# javac HelloWorld.java
#执行结果
[root@VM-0-3-centos test]# java HelloWorld
Hello world!

java 运行class文件时报错:Error: Could not find or load main class。找不到或无法加载主类.注:Java 1.7以下是这样的Exception in thread “main” java.lang.NoClassDefFoundError: HelloWorld.

问题原因:

java执行class文件是根据CLASSPATH指定的地方来找,CLASSPATH包含所有Java类文件的目录。如果它找不到我们所运行程序的main方法就会抛出上面的错误。在IDE里面编译运行程序很简单,因为它把Classpath设置好了,但是在命令行,就得自己处理了。如果希望它查询当前目录,需要在CLASSPATH中加入“.:”,代表当前目录。

java执行class文件对package的路径是强依赖的。它在执行的时候会严格以当前用户路径为基础,按照package指定的包路径转化为文件路径去搜索class文件。

CLASSPATH和PATH不同,PATH用于定位系统可执行文件或命令,在Windows系统是扩展名为 .exe, .dll的文件,在Linux系统是 .so文件。Path也用来定位java程序的本地库。CLASSPATH是用来定位类文件或JAR文件,java类加载器通过CLASSPATH来查找和加载类。

还有一个原因是:打开编辑器,查看.sh脚本文件,发现原来是脚本是由于在Windows下编写的,所以格式是Windows的,使用NotePad++在右下角改一下脚本格式就可以了

  • 实际应用:可以将springboot项目打jar包,发步到服务器上
#方式1:终端前台启动,动态显示日志
java -jar xxxx.jar		#运行springboot项目,自带了tomcat组件
java -jar xxxx.jar >log.file 2>&1 &
#启动后,当前ssh窗口会被锁定,不能再操作其他命令,如果需要执行其他命令,则需要打断进程,可按CTRL + C打断程序运行,或直接关闭窗口,程序也会退出。

#方式2:后台启动 jar 包.&代表在后台运行。
#缺点:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行
java -jar XXX.jar &


#方式3:后台启动jar包,logfile.log为日志输出文件,后台不挂断启动
nohup java -jar xxx1.jar >logfile.log 2>&1 &
#或者是
sudo -u u1 nohup java -jar xxx.jar >logfile.log 2>&1 &
#这个命令中,切换到了 u1 用户来执行,nohup 让程序在后台执行,后面的 log 就是让这个程序的日志输出到当前目录下的logfile.log,当然名称可以随意更改。运行这个命令后会返回程序的 PID,等待一会程序就正常运行了。
#当用 nohub命令启动 jar 包的时候,关闭终端窗口或者 CTRL + C 命令也不会终止程序。如果不指定日志输出文件,则所有的输出都会被重定向到nohub 命令默认的输出文件 nohub.out 的文件中。

#方式4:可以将 jar包链接到/etc/init.d/下,作为服务启动


#方式5:指定配置文件,使用系统默认的log配置,不另行指定日志输入
# 启动/opt/a/目录下的 test.jar ,配置文件使用 pro,日志使用配置文件默认配置,不单独指定。
nohup java -jar /xx/xxx.jar --spring.profiles.active=dev  >/dev/null  2>&1 &
#文件描述符有如下:

0 :stdin(标准输入)
1 :stdout(标准输出)
2 :stderr(标准错误)
#2> /dev/null
#代表重定向操作。将标准错误重定向到/dev/null ,即不输出错误信息。
/dev/null 2>&1 & : 等同于 1>/dev/null 2>&1 &, 即把标准输出重定向到/dev/null,并且把标准错误2重定向标准输出1,即标准输出和标准错误都输出到 /dev/null。

#注意:如果服务有自定义日志,那么不需要额外打印到日志文件中,直接使用后台启动方式即可


#方式1:关闭服务(前台启动)
ctrl+c 即可停止
#或者是
ctrl+z 退出到控制台,执行 bg 再执行exit命令

#方式2:关闭服务(后台服务)
#查看启动的java进程,里面会列出该进程的pid信息
ps aux | grep jar
#查看某端口的java进程:
netstat -tlun | grep 8106
#关闭服务(后台服务)
kill -9 pid(进程ID,上诉命令查出的服务进程id)
#!/bin/bash
APPNAME=xxx
#查询为关闭的xxx服务进程的pid
pid=`ps -ef|grep $APPNAME|grep -v grep|grep -v kill|awk '{print $2}'`
#还有残留的该服务进程,关闭掉
if [ ${pid} ]; then
    echo 'Stop Process...'
    kill -15 $pid
    sleep 5
fi

#后台启动该服务,-Xms/-Xmx分配运行内存空间,--nacos.url指定nacos服务器url,打印日志

nohup java -jar -Xms128m -Xmx512m $APPNAME.jar -XX:PermSize=128M -XX:MaxPermSize=256M --nacos.url=192.168.1.12 --nacosspace=uat > ./log/nohup`date +%Y-%m-%d`.out 2>&1 &

#如果--nacos.url没指定,则如下配置文件${nacos.url:192.168.1.12} 也是使用192.168.1.12
#--nacosspace指定nacos命名空间为uat,如果没指定,则使用配置spring.cloud.nacos.config.namespace的值
#-Xms堆内存初始值m -Xmx堆内存最大值m
#1、堆内存:最小1024M,最大1536M。(对象使用的内存)
#2、永久内存:最小128M,最大256M。(类使用的内存,PermGen)

#终端提示该服务启动成功!
echo $! > pid
echo Start Success!
  • 可以将服务关闭命令打成一个shutdown.sh脚本文件
#!/bin/bash
ps -ef | grep xxx.jar | grep -v grep | awk '{print $2}' | xargs kill
  • 确保Linux的防火墙端口是开启的,如果是云服务器,需要保证云服务器的安全组策略是开放的。
#查看firewall服务状态
systemctl status firewalld
systemctl enable firewalld	开机自启动(默认状态)
systemctl disable firewalld	关闭开机自启
#开启、重启、关闭、firewalld.service服务
#开启
service firewalld start
#重启
service firewalld restart
#关闭
service firewalld stop

#查看防火墙规则
firewall-cmd --list-all				#查看全部信息
firewall-cmd --list-ports			#只看端口信息
#开启端口
#修改防火墙规则,可以修改:/etc/sysconfig/iptables文件
开端口命令:firewall-cmd --zone=public --add-port=8090/tcp --permanent

重启防火墙:systemctl restart firewalld.service
命令含义:
--zone						#作用域
--ādd-port=80/tcp			#添加端口,格式为:端口/通讯协议
--remove-port=端口/tcp	从防火墙的规则中删除端口号
--permanent					#永久生效,没有此参数重启后失效
--reload	重新加载规则,让新加的端口号起作用,重启防火墙的服务 systemctl restart firew

下一篇:Linux学习-90-Tomcat下载安装(tar压缩包)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123702.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!