day4:tomcat—maven-jdk

news2024/12/22 6:03:33

一,java项目部署过程

  • 编译:使用javac命令将.java源文件编译成.class宇节码文件
  • 打包:使用工具如maven或Gradle将项目的依赖、资源和编译后的字节码打包成一个分发格式,如.jar文件,或者.war文件(用于web应用)
  • 部署:将打包后的文件复制到服务器上指定的目录中,可能是Tomcat、JBoss、wildFly等应用服务器的deployments目录

二,jdk概述与安装配置

概述

JDK(Java Development Kit,Java 开发工具包)是开发 Java 应用程序所需的核心工具集合。它包含了运行 Java 应用程序和开发 Java 程序的各种工具和库。JDK 包括了 JRE(Java Runtime Environment,Java 运行时环境)和开发工具,如 编译器javac)、调试工具jdb)以及其他必要的工具和库。

J2SE, J2EE, J2ME 概述

版本全称定义主要用途适用对象
J2SEJava 2 Standard EditionJ2SE 是 Java 的标准版本,提供了核心类库和基础功能,适用于桌面和服务器应用。提供开发桌面应用、命令行应用、图形界面(GUI)应用、控制台应用等。开发桌面程序、简单的服务器应用等。
J2EEJava 2 Enterprise EditionJ2EE 是 Java 的企业版,主要用于开发大型的企业级应用,提供了分布式计算、事务管理和安全功能。用于开发 Web 应用、企业级应用、分布式系统、服务端应用等。开发 Web 应用、大型企业应用、分布式系统等
J2MEJava 2 Micro EditionJ2ME 是 Java 的微型版,主要用于开发嵌入式设备、移动设备、有限资源环境下的应用。用于开发手机、嵌入式设备、物联网设备和其他资源受限的应用。开发移动设备、嵌入式设备等应用。

JDK 版本选择指南

JDK 版本适用场景版本类型建议选择的情况
JDK 8适合老旧项目、已使用 Lambda 表达式和 Stream API 的项目LTS(长期支持)如果你的项目基于 Java 8,或依赖于旧版 API,选择 JDK 8。
JDK 11企业级应用、Web 服务、微服务架构等LTS(长期支持)适合现代化应用,支持微服务,长期稳定更新。
JDK 17大型项目、长期支持、性能优化LTS(长期支持)对于新项目和生产环境中的长期应用,JDK 17 是首选。
JDK 12+新特性、试验性功能、快速更新的应用非 LTS(短期支持)对于快速追求新特性的开发,适合实验性和开发中应用。

推荐做法

  • 对于 生产环境长期维护的项目,优先选择 LTS 版本,如 JDK 8, JDK 11JDK 17
  • 对于需要 最新特性 或希望 提前体验新功能 的开发者,可以选择 非 LTS 版本,如 JDK 12JDK 14 等,但需要注意这些版本会定期更新,且没有长期支持。

特性(运行在jvm上)

  • 跨平台性: JDK 支持跨平台开发,Java 程序可以在不同的操作系统(Windows、Linux、macOS 等)上运行,无需修改代码。运行在jvm上

  • 内存管理: JDK 提供了自动内存管理,包含垃圾回收机制,这大大简化了开发者的工作。

  • 多线程支持: JDK 提供了内建的多线程支持,使得开发者可以高效地利用多核处理器。

  • 丰富的库和 API: JDK 包含了大量的类库和 API,可以帮助开发者完成各种任务,例如网络通信、图形用户界面(GUI)开发、数据库操作等。

  • 安全性: JDK 提供了多种安全特性,包括加密机制、安全类库、身份验证等,帮助开发者构建安全的应用程序。

  • 支持最新的 Java 标准: JDK 支持 Java 的最新版本,包括最新的语言特性和标准库。

安装

yum安装

#查看是否安装java

rpm -qa java

#查看jdk的相关安装包

yum -y list java*

#安装jdk

yum install -y java-11-openjdk.x86_64

#测试验证(不需要配置环境变量)

java -version

源码安装(因为仓库不提供oracle的java)

#卸载之前的jdk

rpm -qa| grep java

yum remove java* -y

#下载JDK安装包:Java Archive Downloads - Java SE 17(这个版本 x64 Compressed Archive

wget https://download.oracle.com/java/17/archive/jdk-17.0.12_linux-x64_bin.tar.gz

#上传源码包的centos机

# 解压缩源码包

tar -xf jdk-17_linux-x64_bin.tar.gz -C /usr/locat/

# 测试

java -version

配置(学了这么久我还不会自己配,现在开始学吧)

打开 /etc/profile 文件: 使用 vim 或任何文本编辑器打开 /etc/profile 文件:

sudo vim /etc/profile

在文件的最后面添加环境变量设置: 在文件的末尾添加以下内容:

# 设置 JAVA_HOME 和更新 PATH
export JAVA_HOME=/usr/local/jdk-17.0.12
export PATH=$JAVA_HOME/bin:$PATH

注意:
  • export JAVA_HOME=/usr/local/jdk-17.0.12 这行设置了 JAVA_HOME 环境变量为您的 JDK 安装路径。
  • export PATH=$JAVA_HOME/bin:$PATH 这行将 Java 的 bin 目录加入到系统的 PATH 环境变量中,这样您就可以在任何地方通过命令行调用 Java。
保存并退出 vim: 按 Esc 键,然后输入 :wq 保存并退出。
使修改生效: 运行以下命令使 /etc/profile 文件的修改立即生效:

source /etc/profile

测试 Java 环境变量是否配置成功: 运行以下命令,查看 Java 版本来验证配置是否正确:

java -version

没有明确设置 java 这个变量,为什么仍然可以直接运行 java --version 命令呢?

原因总结:
  1. JAVA_HOME 环境变量的作用

    • JAVA_HOME 用来指向 JDK 安装的根目录,例如 /usr/local/jdk-17.0.12
  2. PATH 环境变量的作用

    • PATH 变量定义了操作系统搜索可执行文件的目录。当您将 $JAVA_HOME/bin 加入 PATH 时,系统能够在该目录下查找 Java 的可执行文件(如 javajavac 等)。
  3. 为什么可以执行 java 命令

    • java 命令是 JDK 安装目录下的一个可执行文件,通常位于 $JAVA_HOME/bin/java
    • 通过将 $JAVA_HOME/bin 添加到 PATH 环境变量中,操作系统能够在 $JAVA_HOME/bin 目录中找到 java 命令。
    • 结果就是您不需要显式设置 java 变量,系统能够自动找到并执行它。
关键点:
  • 设置 JAVA_HOME 后,$JAVA_HOME/bin 目录会被添加到 PATH 中,操作系统就能在该目录中找到 Java 可执行文件。
  • 您可以通过执行 java -version 来确认 java 命令是否正确运行,因为操作系统会根据 PATH 来查找 java 可执行文件。

命令

javac 文件.java #将源码编译为字节码文件

class wenjian{
    public static void main(String[] args){
        System.out.println("文件");
    }
}

java 编译后的文件 #执行这个文件

三,maven安装装置使用

概述

Maven 是一个项目管理工具,主要用于 Java 项目的构建、管理和依赖管理。它基于 POM(Project Object Model)文件来描述项目的结构、依赖和插件配置,并且可以自动化执行构建、打包、部署等过程。

下载安装

  • 访问 Apache Maven 官网下载页面:Download Apache Maven – Maven
    • 选择适合的版本下载,例如:apache-maven-3.x.x-bin.tar.gzapache-maven-3.x.x-bin.zip
    • wget https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz(复制命令可能报错,我认为应该是csdn给链接加了什么)
  • 解压文件
    • tar -xzvf apache-maven-3.x.x-bin.tar.gz -C /usr/local/
  • 设置环境变量
    • vim /etc/profile
    • source /etc/profile
    • mvn -version 验证一下

配置仓库

Maven 默认使用中央仓库来下载依赖包,但我们通常会配置自己的本地仓库或私有仓库,以便在离线或代理时使用。配置文件为:apache-maven-3.9.9/conf/settings.xml(建议先备份在修改)

1. 配置本地仓库

默认情况下,Maven 会将依赖下载到本地仓库,即 ~/.m2/repository 目录。如果你想自定义本地仓库的位置,可以通过修改 Maven 的配置文件 settings.xml 来实现。

步骤 1:修改 settings.xml
  • 打开 Maven 配置文件 settings.xml,该文件位于 Maven 安装目录下的 conf 文件夹中,或位于用户的 ~/.m2/ 目录下。

  • 修改或添加以下配置:

  • <localRepository>自己设置存放位置</localRepository>(注意:不写这句就是默认)

步骤 2:保存并退出
  • 保存 settings.xml 文件后,Maven 会将所有依赖下载到你指定的目录中,而不是默认的 ~/.m2/repository

2. 配置远程仓库

Maven 默认会连接 Maven Central Repository 来下载依赖包。你可以在 settings.xml 文件中配置其他远程仓库,例如私有仓库或镜像仓库。

步骤 1:配置远程仓库

你可以在 settings.xml 文件中添加自定义远程仓库的配置信息:

  <mirrors> <!-- 定义镜像列表 -->
    <mirror> <!-- 定义单个镜像 -->
      <id>alimaven</id> <!-- 镜像的唯一标识 -->
      <name>aliyun maven</name> <!-- 镜像的名称 -->
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <!-- 镜像的URL -->
      <mirrorOf>central</mirrorOf> <!-- 指定这个镜像替代的仓库 -->
    </mirror>
  </mirrors>
步骤 2:添加远程仓库

你还可以在项目的 pom.xml 文件中添加远程仓库,以便 Maven 下载依赖时从指定的仓库获取。

<repositories>
  <repository>
    <id>example-repo</id>
    <url>https://repo.example.com/maven2</url>
  </repository>
</repositories>

本地仓库(Local Repository)主要用于存储从远程仓库下载的依赖包以及项目构建过程中生成的构件(例如 .jar.war 文件)。本地仓库的作用是缓存这些依赖,以便在以后进行构建时可以避免重复从远程仓库下载,提高构建效率和稳定性。(简单的说,本地仓库会存下远程仓库下载过得资源,并且下次直接先去本地看,没有在远程)

常用命令

mvn工程相关命令,需要在项目pom.xml同级的目录中运行

mvn clean:清理项目,删除 target/ 目录中的所有文件(即编译生成的文件和构建产物)。

解释

  • clean 目标用于移除所有由 Maven 构建产生的文件,确保每次构建都从一个干净的状态开始。
  • 通常在执行构建前执行 clean 命令,避免使用旧的构建结果或缓存的文件。

mvn validate:验证项目是否正确,是否有缺失的依赖。

mvn compile:编译源代码,生成 .class 文件。

解释

  • compile 目标将项目中的所有源代码编译为 .class 文件,这些文件会被存放在 target/classes/ 目录下。
  • 这一步骤不会打包生成 JAR 文件,只是编译源代码。

mvn test:自动扫描并执行位于 src/test/java 目录下的所有测试类,并显示测试结果。

mvn package:将编译后的代码打包成可部署的格式,如 JAR、WAR 或其他格式。

解释

  • package 目标会将编译后的代码和资源文件打包成项目配置中指定的格式(例如 JAR 或 WAR 文件)。该文件会存放在 target/ 目录下。
  • 如果 pom.xml 中配置了打包成 JAR 文件,那么执行此命令后会生成一个 .jar 文件。

mvn install:将打包好的项目安装到本地 Maven 仓库中。

解释

  • install 目标会将打包好的项目(JAR、WAR、EAR 等)安装到本地 Maven 仓库(通常是 ~/.m2/repository)中。
  • 这使得其他项目可以引用这个已构建的项目作为依赖。
  • 在执行 mvn install 后,本地仓库中会存储项目构建的产物,以便其他项目进行依赖。

mvn deploy:将项目的构建产物上传到远程 Maven 仓库。

解释

  • deploy 目标会将构建产物(JAR、WAR、EAR 等)上传到配置的远程 Maven 仓库。这通常用于共享构建产物,供其他开发者或项目使用。
  • deploy 命令通常是在项目完成构建并准备发布时使用,它会将产物发布到中央仓库或私有仓库。

安装数据库(先看tomcat安装)

maven命令(待定)

四,Tomcat安装配置

概述(自带处理动态资源的功能)

Apache Tomcat 是一个轻量级的 Java Web 服务器,专门用于运行 Java Servlets 和 JavaServer Pages(JSP)。它作为一个 Servlet 容器,能够处理 Java Web 应用的请求并生成响应。

主要特点:
  • 支持 Java Servlet 和 JSP 标准。
  • 支持 HTTP 和 AJP 协议。
  • 提供良好的性能和灵活的配置选项。
  • 支持多种 Web 应用部署方式,包括 WAR 文件、目录部署等。

官网:Apache Tomcat® - Welcome!

下载安装

wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98.tar.gz

解压:tar -zxvf apache-tomcat-<version>.tar.gz

设置环境变量:

export CATALINA_HOME=/xxx/tomcat-版本

export PATH=$CATALINA_HOME/bin:$PATH

开启访问,ip:8080

配置文件详解

Tomcat 配置文件位于 conf 目录下,主要的配置文件有:

1. server.xml

这是 Tomcat 的主配置文件,定义了整个服务器的行为,包括端口、线程池、虚拟主机等配置。

常见配置项:

  • Connector:配置 Tomcat 监听的端口,例如 HTTP 端口、AJP 端口等。

  • <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />
    
    • port:监听的端口号(默认为 8080)。
    • connectionTimeout:连接超时时间,单位为毫秒。
    • redirectPort:当启用 SSL 时,会自动重定向的端口。
  • Host:配置虚拟主机,可以在同一台服务器上运行多个应用。
  • <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Context path="" docBase="/path/to/your/application"/>
    </Host>
    
    • name:主机名(通常是 localhost)。
    • appBase:Web 应用的基础目录,通常是 webapps
    • unpackWARs:是否自动解压 WAR 文件。
2. web.xml

web.xml 是每个 Java Web 应用的配置文件,位于 WEB-INF 目录下,定义了应用的 Servlet、过滤器、监听器等。

常见配置项:

  • Servlet 配置
  • <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.example.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    
    • servlet-name:Servlet 的名称。
    • servlet-class:Servlet 类的完整路径。
    • url-pattern:Servlet 映射的 URL。
3. context.xml

该文件配置每个 Web 应用的相关设置,通常位于应用的 META-INF/context.xml 中。

常见配置项:

  • 数据源配置
  • <Resource name="jdbc/MyDataSource" auth="Container" 
              type="javax.sql.DataSource" 
              maxActive="100" maxIdle="30" maxWait="10000"
              username="user" password="password" 
              driverClassName="com.mysql.cj.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/mydb" />
    

部署项目

多实例部署

tomcat优化

五,java项目部署

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

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

相关文章

【D3.js in Action 3 精译_046】DIY 实战:在 Observable 平台利用饼图布局函数实现 D3 多个环形图的绘制

当前内容所在位置&#xff1a; 第五章 饼图布局与堆叠布局 ✔️ 5.1 饼图和环形图的创建 ✔️ 5.1.1 准备阶段&#xff08;一&#xff09;5.1.2 饼图布局生成器&#xff08;二&#xff09;5.1.3 圆弧的绘制&#xff08;三&#xff09;5.1.4 数据标签的添加&#xff08;四&#…

Swin transformer 论文阅读记录 代码分析

该篇文章&#xff0c;是我解析 Swin transformer 论文原理&#xff08;结合pytorch版本代码&#xff09;所记&#xff0c;图片来源于源paper或其他相应博客。 代码也非原始代码&#xff0c;而是从代码里摘出来的片段&#xff0c;配上简单数据&#xff0c;以便理解。 当然&…

Vscode搭建C语言多文件开发环境

一、文章内容简介 本文介绍了 “Vscode搭建C语言多文件开发环境”需要用到的软件&#xff0c;以及vscode必备插件&#xff0c;最后多文件编译时tasks.json文件和launch.json文件的配置。即目录顺序。由于内容较多&#xff0c;建议大家在阅读时使用电脑阅读&#xff0c;按照目录…

麒麟操作系统服务架构保姆级教程(二)sersync、lsync备份和NFS持久化存储

如果你想拥有你从未拥有过的东西&#xff0c;那么你必须去做你从未做过的事情 上篇文章我们说到rsync虽好&#xff0c;但是缺乏实时性&#xff0c;在实际应用中&#xff0c;咱们可以将rsync写进脚本&#xff0c;然后写进定时任务去备份&#xff0c;如果每天凌晨1&#xff1a;00…

关于小程序内嵌h5打开新的小程序

关于小程序内嵌h5打开新的小程序 三种方式 https://juejin.cn/post/7055551463489011749 只依赖于h5本身的就是 https://huaweicloud.csdn.net/64f97ebb6b896f66024ca16c.html https://juejin.cn/post/7055551463489011749 navigateToMiniProgram 故小程序webview里的h5无法…

QP:Query切词

Query 分词&#xff08;切词&#xff09; 分词指将一段连续的文本切成一个个独立且有意义的词汇&#xff0c;在文本召回中会对 Doc 文本内容分词以构建索引&#xff0c;并通过对查询词 Query 分词后去做检索。Query 分词在搜索中是一个基础信号&#xff0c;除了文本召回&#…

鸿蒙元服务从0到上架【第二篇】

第一招&#xff1a;在AppGallery后台下载对应的证书等文件 AppGallery后台 新增发布证书&#xff0c;具体操作可查看申请发布证书 申请发布Profile证书 第二招&#xff1a;在IDE中填写 第三招&#xff1a;打包【⚠️发布上架的只能是Build App】 终端展示这一片绿&#xf…

9_HTML5 SVG (5) --[HTML5 API 学习之旅]

SVG 模糊效果 HTML5中的SVG&#xff08;可缩放矢量图形&#xff09;允许我们创建高质量的二维图形&#xff0c;包括应用各种滤镜效果。模糊效果是通过<feGaussianBlur>滤镜原语来实现的。下面我将给出4个使用SVG进行模糊效果处理的示例&#xff0c;并为每个代码段添加详…

vue+node+mysql8.0,详细步骤及报错解决方案

1.下载需要安装的插件 下载express npm install express下载cors&#xff0c;用于处理接口跨域问题 npm install cors下载mysql npm install mysql 2.配置服务器 可以在vue项目的src同级创建server文件夹&#xff08;这里的位置可随意选择&#xff09; 然后依次创建&#…

相机雷达外参标定综述“Automatic targetless LiDAR–camera calibration: a survey“

相机雷达外参标定综述--Automatic targetless LiDAR–camera calibration: a survey 前言1 Introduction2 Background3 Automatic targetless LiDAR–camera calibration3.1 Information theory based method(信息论方法)3.1.1 Pairs of point cloud and image attributes(属性…

Epic游戏使用mod

以土豆兄弟为例&#xff1a; 第一步&#xff1a;获取 SteamCMD 下载官方 Steam 控制台客户端 (steamCMD) 1. 下载好后打开&#xff0c;是一个在 cmd 窗口的运行的命令行 2. 输入以下代码登录 login anonymous 第二步&#xff1a; 确认自己要下载的游戏 ID 和 mod ID 然后…

EGO Swarm翻译

目录 摘要 Ⅰ 介绍 Ⅱ 相关工作 A . 单四旋翼局部规划 B . 拓扑规划 C. 分布式无人机集群 Ⅲ 基于梯度的局部规划隐式拓扑轨迹生成 A.无需ESDF梯度的局部路径规划 B.隐式拓扑轨迹生成 Ⅳ 无人机集群导航 A 机间避碰 B. 定位漂移补偿 C. 从深度图像中去除agent Ⅴ …

FFmpeg 框架简介和文件解复用

文章目录 ffmpeg框架简介libavformat库libavcodec库libavdevice库 复用&#xff08;muxers&#xff09;和解复用&#xff08;demuxers&#xff09;容器格式FLVScript Tag Data结构&#xff08;脚本类型、帧类型&#xff09;Audio Tag Data结构&#xff08;音频Tag&#xff09;V…

基于LSTM长短期记忆神经网络的多分类预测【MATLAB】

在深度学习中&#xff0c;长短期记忆网络&#xff08;LSTM, Long Short-Term Memory&#xff09;是一种强大的循环神经网络&#xff08;RNN&#xff09;变体&#xff0c;专门为解决序列数据中的长距离依赖问题而设计。LSTM因其强大的记忆能力&#xff0c;广泛应用于自然语言处理…

在Excel中如果制作可以自动填充的序号,删除或者合并单元也可用

大家好&#xff0c;我是小鱼。在日常的办公中有时需要制作带序号的表格&#xff0c;这样可以通过序号来直观地看到有多少条信息&#xff0c;但是如果普通的批量添加序号的话&#xff0c;一旦我们删除或者合并某几行数据&#xff0c;前面的序号不会自动更新&#xff0c;序号显示…

从ESP8266编程到树莓派Pico集成:实现手机APP控制LED灯

物联网(IoT)技术正广泛应用于智能家居领域,通过WiFi模块(如ESP8266)连接嵌入式开发板(如树莓派Pico),可实现设备远程控制。本文将从ESP8266模块的固件编程开始,直至其与树莓派Pico集成,完成通过手机APP远程控制LED灯的功能实现。 一、项目目标 通过手机APP与ESP8266…

【机器学习】分而知变,积而见道:微积分中的世界之思

文章目录 微积分基础&#xff1a;理解变化与累积的数学前言一、微积分概述与基础概念1.1 微积分的定义与重要性1.1.1 微积分的基本组成1.1.2 微积分在机器学习中的应用 1.2 微积分的历史与发展 二、极限与连续性2.1 极限的定义与计算2.1.1 极限的直观理解2.1.2 极限的数学定义2…

【嵌入式开发笔记】OpenOCD到嵌入式调试

最近在把玩一块Risc-V的开发板&#xff0c;使用开发板调试时&#xff0c;需要用到专门的下载器和OpenOCD进行调试。 为了连接这个板子&#xff0c;费了九牛二虎之力。 这里简单记录一下自己的折腾经过吧。 0x00 环境准备 0x0001 调试背景 系统&#xff1a;Virtual Box Ub…

知网研学 | 知网文献(CAJ+PDF)批量下载

知网文献&#xff08;CAJPDF&#xff09;批量下载 一、知网研学安装二、插件及脚本安装三、CAJ批量下载四、脚本下载及PDF批量下载浏览器取消拦截窗口 一、知网研学安装 批量下载知网文件&#xff0c;格式为es6文件&#xff0c;需使用知网研学软件打开&#xff0c;故需先安装该…

ScottPlot学习的常用笔记-02

ScottPlot学习的常用笔记-02 写在前面Why&Target&#xff1a;这里记一些杂项。上下文&背景 先记一下这几个小时的新收获先说一下&#xff0c;为什么可开发可视工具缩放的问题ScottPlot5.0起步.net Core: WinExe.Net Framework也是可以的 写在前面 Why&Target&…