Ubuntu18 中JDK的安装

文章目录

    • 一、背景说明
    • 二、获取安装包
    • 三、安装JDK
      • 3.1 上传安装包
      • 3.2 复制和解压
      • 3.3 环境变量的设置
      • 3.4 验证安装
    • 四、问题列表
      • 4.1 .bashrc文件在哪里?.bashrc是什么?
      • 4.2 为什么使用rz上传安装包时会报: 传输失败?
    • 五、总结

一、背景说明

开发好的java应用一般需要部署到服务器。出于稳定性、安全性和部署成本的考虑,一般会倾向于将应用部署到Linux系统。而我们今天讨论的是如何在 Ubuntu 系统中部署 java 应用,而 JDK 的安装是应用部署的基础。

环境说明:
操作系统:Ubuntu 18.04.4 LTS
JDK版本:jdk-8u291-linux-x64.tar.gz

二、获取安装包

jdk8 最新版本的下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

jdk8u211及以上版本的下载地址:
https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html

jdk所有版本的下载地址:
https://www.oracle.com/java/technologies/downloads/archive/

从oracle下载安装包,需要注册oracle账号。

三、安装JDK

3.1 上传安装包

我是在windows系统下载的安装包,然后通过XShell的 rz命令进行安装包上传的
具体命令如下:

# 转到~/software目录(如果没有请创建)
cd ~/software# 执行文件上传
# -b参数:以二进制文件进行上传
sudo rz -b

3.2 复制和解压

上传过程完成后,需要进行文件的复制

#创建/usr/java目录
sudo mkdir /usr/java#复制文件(注意:cp的第二个参数是一个目录。如果写成/usr/java,并且java目录不存在,就会将第一个参数的文件复制为名称为java的文件)
sudo cp ~/software/jdk-8u291-linux-x64.tar.gz /usr/java/

解压安装包:

# 转到/usr/java目录
cd /usr/java# 解压文件到指定目录
sudo tar -zvxf jdk-8u291-linux-x64.tar.gz jdk1.8.0_291# 删除安装包
sudo rm jdk-8u291-linux-x64.tar.gz

3.3 环境变量的设置

环境变量的设置需要使用到 .bashrc文件
相关操作如下:

# 打开.bashrc文件
sudo vim ~/.bashrc

在文件末尾追加如下内容:

##JAVA_CONFIG
JAVA_HOME=/usr/java/jdk1.8.0_291
JRE_HOME=$JAVA_HOME/jre
JAVA_BIN=$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME PATH CLASSPATH

这里内容的添加,等价于 windows系统中环境变量的设置
这里有几点内容需要交代一下:

  1. 所有的环境变量都是大写的,而Linux是区分大小写的
  2. 形如$JAVA_HOME 这种 $+环境变量 的写法,都代表对环境变量的引用
  3. $PATH:路径 代表在原路径后面添加新的路径
  4. Unix类系统的环境变量的路径用冒号(:)分割,而不是分号(;)。这一点需要和windows系统进行区分
  5. 为了避免混乱,建议将所有的环境变量都添加在文件末尾,并添加注释。

最后一步千万不要忘记,需要 使配置生效

source ~/.bashrc

3.4 验证安装

验证 JDK 是否安装成功,最简单的方式是在终端执行下面的命令:

java -version

我的服务器上的执行结果如下:
java -version
如果也和我上面一样,提示JDK的具体版本,则表示JDK安装成功!!!

 

四、问题列表

4.1 .bashrc文件在哪里?.bashrc是什么?

答:.bashrc是 home目录下 的一个shell文件。
用途:用于存储用户的个性化设置。.bashrc 中的内容在每次打开终端时都会读取

 
.bashrc 具体用途:
1. 个性化指令
下图是.bashrc的部分内容:
ll
其作用就是定义命令别名ll,其等价于命令:ls -alF

2. 设置环境路径
set
上图展示了环境路径的设置。

3. 提示符设置
相关命令如下:

PS1=[\u: \w]$”

 

4.2 为什么使用rz上传安装包时会报: 传输失败?

在上传jdk安装包的过程中,发生了传输失败的情况,相关截图如下:
error
报错原因:

使用的上传命令如下:

rz -b

因为上传文件到服务器是一个有可能造成安全问题的操作,所以普通用户权限是不够的。因此,上述报错的原因:

当前用户没有权限

解决方法:

既然是因为权限不足导致的失败,所以需要提升权限,可替换为如下命令:

sudo rz -b

 

五、总结

本文讲述了如何在 Ubuntu 系统中安装JDK的一般思路。首先,告诉读者从哪里可以获取安全完整的安装包。然后又指导读者如何上传安装包到服务器,在此过程中使用到了XShell,并用到了rz命令进行文件的传输。

后续又讲解了如何将jdk安装到合适的位置,并设置了相关的环境变量,同时也简单交代了什么是 .bashrc 。最后对整个安装过程进行了验证。

 
 
 
 
 


参考:

  • 使用Xshell的rz命令上传文件失败的解决方法
  • 什么是.bashrc,有什么用?

相关链接:

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

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

相关文章

解决RuntimeError: Couldn‘t load custom C++ ops. This can happen if your PyTorch

问题描述 刚下好yolov8的代码,想测一下能否成果,果然没成功,报错如下 RuntimeError: Couldnt load custom C ops. This can happen if your PyTorch and torchvision versions are incompatible, or if you had errors while compiling tor…

kettle从入门到精通 第七五课 ETL之kettle血缘,数据血缘

在了解kettle血缘之前,咱们先来了解下什么是数据血缘? 1、数据血缘定义(来自gpt) 数据血缘(Data Lineage)是指在数据管理和数据分析中追踪数据的源头、流向和处理过程的能力。具体来说,数据血…

《昇思25天学习打卡营第21天|基于 MindSpore 实现 BERT 对话情绪识别》

#学习打卡第21天# 1. BERT 模型 BERT全称是来自变换器的双向编码器表征量(Bidirectional Encoder Representations from Transformers),它是Google于2018年末开发并发布的一种新型语言模型,是基于Transformer中的Encoder并加上双向…

org/openxmlformats/schemas/spreadsheetml/x2006/main/CTWorkbook$Factory

org/openxmlformats/schemas/spreadsheetml/x2006/main/CTWorkbook$Factory POI的问题 在操作Excel时,出现这个问题是因为缺少了poi-ooxml-schema jar包,并且与poi的jar包版本一致

昇思25天学习打卡营第21天 | 基于MindSpore的红酒分类实验

内容简介 本实验介绍了使用MindSpore框架实现K近邻算法(KNN)对红酒数据集进行分类的全过程。通过数据读取、预处理、模型构建与预测,展示了KNN算法在红酒数据集上的应用。实验中详细解释了KNN的原理、距离度量方式及其在分类问题中的应用&…

Flutter对接FlutterBugly 报错Zone mismatch

在Flutter对接FutterBlugy时报如下错误: Unhandled Exception: Zone mismatch. E/flutter ( 1292): The Flutter bindings were initialized in a different zone than is now being used. This will likely cause confusion and bugs

PyTorch张量创建和随机数生成器算法

文章目录 1、基本创建方式1.1、根据已有数据创建张量1.2、根据已有数据创建张量1.3、根据已有数据创建张量 2、创建线性和随机张量2.1、创建线性空间的张量2.2、创建随机张量2.3、什么是随机数种子2.4、initial_seed()和manual_seed() 3、创建01张量3.1、全0张量3.2、全1张量3.…

Springboot+Aop用注解实现阿里云短信验证码校验,校验通过自动删除验证码缓存

1.新建操作类型枚举&#xff08;这里的IEnum是我自定义的http请求拦截接口&#xff0c;不需要的话可以不用实现&#xff09; Getter AllArgsConstructor public enum OperationType implements IEnum<Integer> {/*** 注册*/SIGN_UP(0),/*** 密码登录*/LOGIN_BY_PWD(1),/…

Apache Lucene 详解及示例

Apache Lucene 详解及示例 1. 简介 Apache Lucene 是一个高性能的全文搜索引擎库&#xff0c;广泛应用于构建搜索系统。本文将详细解析 Lucene 的核心概念和主要功能&#xff0c;并通过多个示例代码演示其使用方法。 2. 核心概念 2.1 倒排索引 倒排索引将文档中的每个词条…

【Java18】初始化块

初始化块和构造器、成员变量、成员方法一起&#xff0c;是唯四能在类中出现的成员。 初始化块的作用和构造器类似&#xff0c;目的是对对象进行初始化操作&#xff1b;一个类中可以有多个初始化块&#xff1b;初始化块只有两种修饰方式&#xff1a;static和default。用static修…

向量数据量milvus k8s helm 对接外部安装部署流程

前情概要&#xff1a;历经了太多的坑&#xff0c;从简单的到困难的&#xff0c;该文章主要是为大家尽可能的展现安装部署流程中遇见的坑&#xff01; 如果2024年7月15日17:13:41 你处在这个时间阶段 附近&#xff0c;你会发现docker下载镜像失败&#xff01; 这个问题&#xff…

[C/C++入门][ifelse]11、三位数找最大值(比大小以及多个数找最大值)

比较数的大小 在学习数学的早期阶段&#xff0c;孩子们会学会如何比较两个数的大小。他们通常通过观察数的数字组成来判断哪个数更大。例如&#xff0c;当比较数字34和56时&#xff0c;如果左边第一位的数字不同&#xff0c;那么具有较大数字的数就是较大的数。在这个例子中&a…

nginx生成自签名SSL证书配置HTTPS

一、安装nginx nginx必须有"--with-http_ssl_module"模块 查看nginx安装的模块&#xff1a; rootecs-7398:/usr/local/nginx# cd /usr/local/nginx/ rootecs-7398:/usr/local/nginx# ./sbin/nginx -V nginx version: nginx/1.20.2 built by gcc 9.4.0 (Ubuntu 9.4.0…

机器学习与神经网络之间的关系 --九五小庞

机器学习与神经网络之间存在紧密而复杂的关系。简而言之&#xff0c;神经网络是机器学习领域中的一个重要分支&#xff0c;尤其是深度学习的核心组成部分。下面详细解释它们之间的关系&#xff1a; 机器学习概述 机器学习是一门涉及让计算机系统从数据中自动学习和改进的学科。…

k8s secret-从环境变量里去读和从yaml文件里读取secret有什么区别?

从环境变量和YAML文件中读取Kubernetes Secret的区别主要体现在使用方式、动态更新能力以及管理便捷性上。以下是详细的区别说明&#xff1a; 1. **使用方式**&#xff1a; - **环境变量方式**&#xff1a;Kubernetes允许将Secret作为环境变量注入到Pod的容器中。这种方式的好处…

Android Studio - adb.exe已停止运作的解决方案

adb.exe 是Android Debug Bridge 的缩写&#xff0c;它是Android SDK 中的一个调试工具&#xff0c;允许开发者通过命令行界面与设备进行交互&#xff0c;执行各种操作&#xff0c;如运行设备的shell、管理模拟器或设备的端口映射、在计算机和设备之间上传/下载文件、将本地APK…

微服务经纬:Eureka驱动的分布式服务网格配置全解

微服务经纬&#xff1a;Eureka驱动的分布式服务网格配置全解 在微服务架构的宏伟蓝图中&#xff0c;服务网格&#xff08;Service Mesh&#xff09;作为微服务间通信的独立层&#xff0c;承担着流量管理、服务发现、故障恢复等关键任务。Eureka&#xff0c;Netflix开源的服务发…

我的GeneFace++部署与运行之旅

文章目录 引言项目背景概述重要性分析结论 环境准备1. 安装CUDA2. 安装Python依赖3. 准备3DMM模型&#xff08;BFM2009&#xff09;及其他数据 运行官方 Demo训练自己的视频数据准备训练推理测试 遇到的问题与解决方案问题一&#xff1a;cuda 安装完发现版本不对问题二&#xf…

C语言 底层逻辑详细阐述结构体 #结构体的声明 #结构体的初始化 #结构体成员访问 #结构体传参

文章目录 前言 一、结构体的基础知识 二、结构体的初始化 1、结构体类型声明&#xff1a; 2、结构体成员的类型 3、结构体变量的初始化&#xff1a; 三、结构体成员访问 四、结构体传参 总结 前言 基于自我理解的角度来讲结构体&#xff1b; 一、结构体的基础知识 结构是一些…

网络安全-网络设备及其配置1

1.路由器 路由器的作用 路由器是连接多个网络的设备&#xff0c;主要功能是数据包的转发和路由选择。路由器通过分析目标IP地址&#xff0c;将数据包从一个网络转发到另一个网络&#xff0c;确保不同网络之间的通信。它在家庭、企业和互联网服务提供商&#xff08;ISP&#x…