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

news2025/1/24 1:34:34

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)
  • 可以将服务启动命令打成一个start.sh脚本文件。linux 下启动 jar包
#!/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压缩包)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105237.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker ( 三 ) 安装 MySQL

6.2.安装 MySQL 6.2.1.拉取镜像 6.2.1.1.搜索查看可用的mysql镜像 docker search mysql6.2.1.2.拉取最新版本的mysql镜像 docker pull mysql:latest6.2.1.3.查看镜像是否已经有mysql docker images|grep mysql6.2.2.启动容器 6.2.2.1.启动容器实例 启动同时设置名字以及r…

搜遍全网,终于找到了报表自动化的最佳工具,比Excel好用10倍

工作快十年了,最开始是在华为做报表,后来去了美团从事大数据和平台方面的工作,现在在国企干了快三年。辗转各大企业的IT部门,最明显的感知就是企业间数字化程度差距太大了。就从报表这个点来说,互联网公司早就实现了报…

动物宠物领养网站的设计与实现(Vue+Spring Boot+Java)

目 录 摘 要 I Abstract II 目 录 III 图清单 V 表清单 VII 1 绪论 1 1.1 动物领养网站的现状与发展 1 1.2 “万千宠爱”动物领养网站的研究内容 2 1.3 “万千宠爱”动物领养网站的研究目的和意义 2 1.4 本章小结 3 2 本“万千宠爱”动物领养网站的分析 4 2.1 可行性分析 4 2.…

【目标检测】YOLOv5能识别英雄和小兵?原理解析~

目录 一、简介 二、模型结构 1.整体结构图 2.Backbone(CSPDarknet) 3.SPPF(Spatial Pyramid Pooling - Fast) 4.Neck(FPNPAN) 5.Head 三、anchor编解码 1.anchor编码 2.anchor解码 四、损失函数 …

【20天快速掌握Python】day09-模块和包

1.Python中的模块 在Python中有一个概念叫做模块(module)。 说的通俗点:模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块 比如我们经常使用工具 random,就是一个模块。使…

车险java开发工程师【10k-15k】13薪

众推职聘”以交付结果为宗旨的全流程化招聘服务平台! 今日招聘信息↓ 【工作内容】 1.参与软件项目和产品概要设计,负责详细功能设计、编码实现及相关文档编写; 2.根据模块设计完成相应的模块编码及单元测试; 3.对用户行为、需求…

「React 深入」知悉Fiber,方能百战不殆~

在React v16以上的版本引入了一个非常重要的概念,那就是fiber,实际上fiber是react团队花费两年的时间重构的架构,在之前的文章中也提及到了fiber,那么fiber架构究竟是什么,为什么要使用fiber 在正式开始前&#xff0c…

网络空间安全——MS15_034漏洞验证与安全加固

网络空间安全——MS15_034漏洞验证与安全加固 靶机:windows 2008 安装好iis7.5 1.安装iis7.5,用127.0.0.1访问,将访问页面截图 2.用burpsuite 抓包分析是否存在ms15_034漏洞,抓包验证截图 3.调用msf相应的测试模块进行扫描,…

沥高科技冲刺创业板:拟募资5.45亿 为胡仲杰与岑婵芳夫妻店

雷递网 雷建平 12月20日上海沥高科技股份有限公司(简称:“沥高科技”)日前递交招股书,准备在深交所创业板上市。沥高科技计划募资5.45亿元,其中,1.79亿元用于航空航天用真空袋工艺材料生产项目,…

Talk预告 | 悉尼科技大学在读博士生胡思逸:MARLlib,全新的多智能体强化学习框架

本期为TechBeat人工智能社区第464期线上Talk! 北京时间12月21日(周三)20:00,悉尼科技大学澳大利亚人工智能研究所ReLER实验室在读博士生——胡思逸的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “MARLlib, 全新的多智能体…

2022 年 MathorCup 高校数学建模挑战赛A题

赛道 A:“58 到家”家政服务订单分配问题 “58 到家”是“58 同城”旗下高品质、高效率的上门家政服务平台,平 台向用户提供家政保洁、保姆、月嫂、搬家、维修等众多生活领域的服务。 在家政保洁场景中,用户在平台下单购买服务后,…

非零基础自学Golang 第13章 并发与通道 13.3 channel 13.3.1 channel类型 13.3.2 缓冲机制

非零基础自学Golang 文章目录非零基础自学Golang第13章 并发与通道13.3 channel13.3.1 channel类型13.3.2 缓冲机制第13章 并发与通道 13.3 channel goroutine运行在相同的地址空间,因此访问共享内存必须做好同步。 引用类型channel是CSP模式的具体体现&#xff…

游戏玩得好的AI,已经在看病救人了

一个游戏AI,怎么干起医生的活了? 而且这本事还是从打游戏的经验里总结来的。 喏,拿一张病理全片扫描图像,不用遍历所有高倍镜视野,也能找到病灶所在。 在它看来,这个过程和《我的世界》里伐木居然是类似的…

Diffusion惊艳应用大赏

文|白鹡鸰自从Diffusion模型兴起之后,AI绘画圈又迎来了一波猪突猛进式的强化,早几年还只是Ins的二次元/迪士尼风格滤镜,让人穿上不同服装当接头霸王。现在,你随便输几句话,模型就能刷刷刷给你吐出一大堆精美…

024 | 知行国学:全国领先的线上一对一国学教育平台 | 大学生创新训练项目申请书 | 极致技术工厂

公司产品 公司的产品包括两个部分的内容,一是模块化、智能化的课程体系——“诗书礼乐”快乐国学课程体系,二是梯队化、“以一带群”、联动型的师资培训体系——“知行者”大学生国学师资培训模式。 近年来,国家大力弘扬中华优秀传统文化&a…

在Docker中的ubuntu中安装Python3和Pip

下载载python3.7 apt-get update apt-get install python3.7 建立软链接 先删除旧的python连接。 删除后建立新的连接关系,例如linux下python3默认在/usr/bin/下 rm -rf /usr/bin/python ln -s /usr/bin/python3.7 /usr/bin/python 进入python3.7的lib中&#xf…

基于springboot的疫情防控系统java疫情防控物资管理平台源码和论文

系统开发技术介绍 2.1 MySQL数据库 社区疫情防控系统采用了一款开源免费的关系型数据库——MySQL数据库进行开发,因为它不收取任何费用,免费提供给各个开发者使用学习使用,使本次系统开发成本大大降低了。由于MySQL数据库体积小&#xff0c…

5.5 5个小红书月销售10W+的商家【玩赚小红书】

一、SWEETIEDOTS:蛋糕 简介 :甜点类商家,独创罐装厚卡龙、创新手工点心甜点,目前在小红书有2.7W粉丝,点赞评超7W,在简介上,告诉用户在薯店进行购买,客单价在98-108元。 内容&#x…

堆堆排序加强堆和堆有关的题一网打尽

堆结构、堆排序 堆结构的实现 堆结构就是用数组实现的完全二叉树结构 2)完全二叉树中如果每颗子树的最大值都在顶部就是大根堆 3)完全二叉树中如果每颗子树的最小值都在顶部就是小根堆 4)堆结构的向上调整和向下调整算法 向上调整 向下调整 5)堆结构某个元素的增大和减少 …

安卓手机独有的6个功能,个个都很实用,你用过几个呢?

安卓和苹果,你更喜欢哪一种?今天我整理了6个安卓独有的功能,不看不知道,一看安卓用户可能会吓一跳。因为这些功能真的很实用,但是苹果却没有这些功能。第一种:更改默认打开的应用 苹果系统无法直接更改默认…