0

0

如何在Linux系统中配置Java和Spring环境

P粉602998670

P粉602998670

发布时间:2025-09-19 10:06:01

|

447人浏览过

|

来源于php中文网

原创

答案:配置linux上java和spring环境需安装jdk、设置java_home和path变量、安装maven或gradle;推荐使用openjdk因开源免费且系统集成度高;注意环境变量作用域、路径正确性及版本冲突;通过spring initializr创建项目,用maven或gradle构建为可执行jar,再以java -jar运行,并处理端口、防火墙、权限等问题。

如何在linux系统中配置java和spring环境

在Linux系统上配置Java和Spring环境,核心在于三步:首先是安装Java开发工具包(JDK),它是运行Java应用程序和编译代码的基础;其次是正确配置Java相关的环境变量,让系统能找到JDK;最后,通常我们会安装一个构建工具如Maven或Gradle,它们是管理Spring项目依赖和构建流程的关键。这个过程并不复杂,但有些细节,如果没留意,可能会让你多走不少弯路。

解决方案

配置Java和Spring环境,我们通常会从JDK的安装开始,然后是构建工具,最后是验证。

1. 安装Java开发工具包 (JDK)

在Linux上,OpenJDK是首选,因为它通常是开源且易于通过包管理器安装。

立即学习Java免费学习笔记(深入)”;

  • 使用包管理器安装 (推荐)

    • Debian/Ubuntu系 (apt):
      sudo apt update
      sudo apt install openjdk-17-jdk # 安装OpenJDK 17,你可以根据需要选择其他版本
    • CentOS/Fedora系 (yum/dnf):
      sudo dnf install java-17-openjdk-devel # Fedora
      # 或者对于较旧的CentOS/RHEL
      sudo yum install java-17-openjdk-devel

      安装完成后,可以通过

      java -version
      javac -version
      来验证。

  • 手动安装 (如果需要特定版本或发行版) 从Oracle官网或Adoptium (推荐) 下载JDK的Linux

    tar.gz
    包。

    # 假设下载到 ~/Downloads/jdk-17.0.x_linux-x64_bin.tar.gz
    sudo mkdir -p /usr/local/java
    sudo tar -xzf ~/Downloads/jdk-17.0.x_linux-x64_bin.tar.gz -C /usr/local/java
    # 重命名目录以便管理
    sudo mv /usr/local/java/jdk-17.0.x /usr/local/java/jdk-17

2. 配置环境变量

无论哪种安装方式,都需要设置

JAVA_HOME
和更新
PATH
变量。

  • 编辑用户配置文件: 打开
    ~/.bashrc
    ~/.profile
    (根据你的Shell和需求,
    ~/.bashrc
    更常见于交互式Shell)。
    nano ~/.bashrc

    在文件末尾添加以下行:

    # Java Environment Variables
    export JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64" # 根据实际安装路径调整
    # 如果是手动安装,路径可能是 /usr/local/java/jdk-17
    export PATH="$JAVA_HOME/bin:$PATH"

    保存并退出。然后执行

    source ~/.bashrc
    使更改生效。 验证:
    echo $JAVA_HOME
    java -version

3. 安装构建工具 (Maven 或 Gradle)

Spring项目几乎都依赖Maven或Gradle进行构建和依赖管理。

  • 安装Maven:

    • 使用包管理器:
      sudo apt install maven # Debian/Ubuntu
      sudo dnf install maven # Fedora/CentOS
    • 手动安装: 从Maven官网下载
      tar.gz
      包,解压到
      /opt
      /usr/local
      sudo tar -xzf ~/Downloads/apache-maven-3.x.x-bin.tar.gz -C /opt/
      sudo ln -s /opt/apache-maven-3.x.x /opt/maven # 创建软链接方便管理

      同样需要配置环境变量,在

      ~/.bashrc
      中添加:

      export M2_HOME="/opt/maven"
      export PATH="$M2_HOME/bin:$PATH"

      source ~/.bashrc
      后,通过
      mvn -version
      验证。

  • 安装Gradle (类似Maven):

    • 使用包管理器:
      sudo apt install gradle # Debian/Ubuntu
      sudo dnf install gradle # Fedora/CentOS
    • 手动安装: 从Gradle官网下载
      zip
      包,解压到
      /opt
      /usr/local
      sudo unzip ~/Downloads/gradle-x.x.zip -d /opt/
      sudo ln -s /opt/gradle-x.x /opt/gradle

      ~/.bashrc
      中添加:

      export GRADLE_HOME="/opt/gradle"
      export PATH="$GRADLE_HOME/bin:$PATH"

      source ~/.bashrc
      后,通过
      gradle -v
      验证。

至此,你的Linux系统已经具备了运行和开发Spring应用的基础环境。

为什么选择OpenJDK而不是Oracle JDK?

这其实是个很实际的问题,尤其是在生产环境和持续集成/部署的场景下。简单来说,OpenJDK在Linux上的优势非常明显:

首先,许可协议的自由度。Oracle在Java 8之后对Oracle JDK的商业使用许可进行了调整,虽然个人开发和测试仍然免费,但在企业级应用中,如果需要长期支持和更新,可能就需要付费了。而OpenJDK,顾名思义,是完全开源的,基于GPLv2+CE许可,这意味着你可以在任何场景下自由使用、分发和修改,没有额外的许可成本和合规性担忧。

其次,Linux发行版的原生支持。几乎所有主流的Linux发行版,无论是Ubuntu、CentOS、Fedora还是Arch Linux,它们的官方软件仓库中都包含了OpenJDK。这意味着你可以直接通过

apt
yum
dnf
等包管理器轻松安装、更新和管理OpenJDK,享受系统级的安全更新和依赖管理。这比手动下载Oracle JDK的
.tar.gz
包然后解压、配置环境变量要省心得多,也更符合Linux的生态习惯。

再者,性能和功能上的趋同。过去,Oracle JDK在性能和一些高级特性上可能略有优势,但随着OpenJDK社区的蓬勃发展,特别是像Adoptium(前身为AdoptOpenJDK)这样的项目,它们提供的OpenJDK发行版在性能、稳定性、功能集上已经与Oracle JDK基本持平,甚至在某些方面做得更好。许多大型企业和云服务提供商也都在使用和贡献OpenJDK,这进一步证明了其可靠性。

所以,对于绝大多数在Linux上进行Java和Spring开发的场景,OpenJDK都是更明智、更便捷、风险更小的选择。我个人在Linux服务器上部署应用时,几乎总是选择OpenJDK。

配置环境变量时,我应该注意哪些常见的“坑”?

配置环境变量听起来简单,但确实有些地方稍不留神就会踩坑。我根据自己和同事们的经验,总结了几个最常见的“陷阱”:

魔众积分商城系统
魔众积分商城系统

魔众积分商城系统提供积分商城,会员积分系统,积分兑换商城,积分系统,积分运营,营销活动工具,积分游戏。API接口对接会员积分系统,简单配置页面即可上线,助力企业会员运营管理。 魔众积分商城系统,商品兑换更加容易 魔众积分商城系统支持多种操作系统和软件环境,如Linux/Unix、Windows操作系统以及Apache/Nginx、PHP5.5.9+/PHP7.0、MySQL5.

下载

一个大坑是环境变量的“作用域”问题。你可能会在

/etc/profile
/etc/environment
~/.bashrc
~/.profile
甚至
/etc/bash.bashrc
等多个地方看到环境变量的配置。

  • ~/.bashrc
    :这是针对当前用户的Bash Shell配置,每次打开新的终端会话时加载。如果你只希望当前用户使用特定的JDK,这是个好地方。但如果通过SSH执行非交互式脚本,可能就不会加载。
  • ~/.profile
    :这个文件在用户登录时加载,通常会调用
    ~/.bashrc
    。对于图形界面登录的用户,它可能更早生效。
  • /etc/profile
    :这是系统级的配置,所有用户登录时都会加载。如果你希望所有用户都能访问同一个JDK,可以考虑这里。
  • /etc/environment
    :这个文件通常用于设置系统范围的环境变量,不执行任何脚本,只是简单的
    KEY=VALUE
    格式。

最常见的错误就是把配置写到了一个不生效的地方,比如在

~/.bashrc
里改了,但通过
sudo
运行命令时却发现
JAVA_HOME
没生效,因为
sudo
默认不会加载用户的环境变量。这时候可能需要在
sudo
命令前加上
sudo env "PATH=$PATH" "JAVA_HOME=$JAVA_HOME" your_command
,或者在
/etc/profile.d/
下创建新的脚本来设置系统级变量。

另一个常见的错误是路径配置不正确。可能是JDK的安装路径写错了,或者是

PATH
变量中没有包含
$JAVA_HOME/bin
。例如,你可能写成了
export JAVA_HOME="/usr/lib/jvm/java-17"
,但实际上可执行文件在
java-17/bin
目录下。所以,
export PATH="$JAVA_HOME/bin:$PATH"
这一步至关重要,它把JDK的
bin
目录加到系统的可执行路径中,这样你才能直接运行
java
javac
命令。

再有就是忘记

source
命令。修改了
~/.bashrc
~/.profile
后,这些更改并不会立即生效。你必须手动执行
source ~/.bashrc
source ~/.profile
,或者关闭并重新打开终端会话,才能让新的环境变量加载进来。很多人改完文件就直接
java -version
,然后发现没变,就以为配置失败了。

最后,版本冲突也是个隐性问题。如果你的系统安装了多个JDK版本,而

PATH
变量中包含的顺序不明确,或者
update-alternatives
等工具没有正确配置,可能会导致
java -version
报告一个版本,而实际编译时却使用了另一个版本,这在Spring项目开发中可能会引发各种奇怪的兼容性问题。通常,我会用
update-alternatives --config java
update-alternatives --config javac
来明确指定系统默认的JDK版本。

这些小细节,虽然看起来不值一提,但在实际操作中却能让你抓狂,所以务必仔细检查。

如何快速启动一个Spring Boot项目,并确保其在Linux上正常运行?

在Linux上快速启动并运行Spring Boot项目,其实非常直接,因为它被设计成一个自包含(self-contained)的可执行JAR包。以下是我通常的操作步骤:

1. 创建Spring Boot项目

最快捷的方式是使用 Spring Initializr (start.spring.io)。这是一个Web界面,你可以选择项目的元数据(Maven/Gradle、Java版本、Group、Artifact等)以及所需的依赖项(比如Spring Web、Spring Data JPA等)。

  • 访问
    start.spring.io
  • 选择
    Maven Project
    Gradle Project
  • 选择你的Java版本(比如
    17
    )。
  • 添加
    Spring Web
    依赖。
  • 点击
    Generate
    下载项目压缩包。

解压后,你会得到一个标准的Maven或Gradle项目结构。

2. 构建项目

进入项目根目录,使用你选择的构建工具来打包项目。

  • 使用Maven:

    cd your-spring-boot-project
    mvn clean package

    这个命令会清理旧的构建产物,然后编译代码、运行测试(如果存在),并将项目打包成一个可执行的JAR文件。通常,这个JAR文件会位于

    target/
    目录下,命名类似于
    your-project-name-0.0.1-SNAPSHOT.jar

  • 使用Gradle:

    cd your-spring-boot-project
    gradle clean build

    对于Gradle,可执行JAR文件通常在

    build/libs/
    目录下,命名类似于
    your-project-name-0.0.1-SNAPSHOT.jar

构建成功后,你就能看到那个自包含的JAR包了。

3. 运行Spring Boot应用

在Linux服务器上运行这个JAR包非常简单,只需要一个Java运行时环境(JRE或JDK)。

java -jar target/your-project-name-0.0.1-SNAPSHOT.jar
# 或者对于Gradle
java -jar build/libs/your-project-name-0.0.1-SNAPSHOT.jar

Spring Boot应用启动后,你会在终端看到详细的日志输出,包括它监听的端口(通常是8080)。

确保正常运行的注意事项:

  • 端口占用: 如果你的应用默认监听8080端口,而服务器上已经有其他服务占用了这个端口,Spring Boot应用会启动失败。你可以在
    application.properties
    application.yml
    中配置
    server.port=8081
    来更改端口,或者通过命令行参数
    java -jar your-app.jar --server.port=8081
  • 防火墙 即使应用成功启动并监听了端口,如果Linux服务器的防火墙(如
    ufw
    firewalld
    )没有开放该端口,外部也无法访问。你需要根据你的防火墙配置规则来开放端口,例如:
    # 对于ufw
    sudo ufw allow 8080/tcp
    sudo ufw enable
    # 对于firewalld
    sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
    sudo firewall-cmd --reload
  • 权限问题: 确保运行JAR包的用户有足够的权限访问项目目录、日志文件写入目录等。虽然Spring Boot应用通常不需要特殊的系统权限,但在某些特定场景下(例如访问某些受保护的目录),这可能是个问题。
  • 内存分配: 对于较大的Spring Boot应用,可能需要为JVM分配更多的内存。你可以在
    java -jar
    命令中添加JVM参数:
    java -Xmx512m -Xms256m -jar target/your-project-name-0.0.1-SNAPSHOT.jar

    这会设置最大堆内存为512MB,初始堆内存为256MB。

  • 后台运行与日志管理: 在生产环境中,你通常不希望应用在前台运行。可以使用
    nohup
    命令或者
    systemd
    服务来管理Spring Boot应用:
    # 使用nohup
    nohup java -jar target/your-project-name-0.0.1-SNAPSHOT.jar > app.log 2>&1 &

    更好的方式是创建一个

    systemd
    服务单元,这样可以更好地控制应用的启动、停止和重启,并集成到系统的日志管理中。

通过这些步骤和注意事项,你应该能比较顺利地在Linux上部署和运行你的Spring Boot应用了。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

156

2025.08.06

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

88

2026.01.26

spring boot框架优点
spring boot框架优点

spring boot框架的优点有简化配置、快速开发、内嵌服务器、微服务支持、自动化测试和生态系统支持。本专题为大家提供spring boot相关的文章、下载、课程内容,供大家免费下载体验。

139

2023.09.05

spring框架有哪些
spring框架有哪些

spring框架有Spring Core、Spring MVC、Spring Data、Spring Security、Spring AOP和Spring Boot。详细介绍:1、Spring Core,通过将对象的创建和依赖关系的管理交给容器来实现,从而降低了组件之间的耦合度;2、Spring MVC,提供基于模型-视图-控制器的架构,用于开发灵活和可扩展的Web应用程序等。

408

2023.10.12

Java Spring Boot开发
Java Spring Boot开发

本专题围绕 Java 主流开发框架 Spring Boot 展开,系统讲解依赖注入、配置管理、数据访问、RESTful API、微服务架构与安全认证等核心知识,并通过电商平台、博客系统与企业管理系统等项目实战,帮助学员掌握使用 Spring Boot 快速开发高效、稳定的企业级应用。

73

2025.08.19

Java Spring Boot 4更新教程_Java Spring Boot 4有哪些新特性
Java Spring Boot 4更新教程_Java Spring Boot 4有哪些新特性

Spring Boot 是一个基于 Spring 框架的 Java 开发框架,它通过 约定优于配置的原则,大幅简化了 Spring 应用的初始搭建、配置和开发过程,让开发者可以快速构建独立的、生产级别的 Spring 应用,无需繁琐的样板配置,通常集成嵌入式服务器(如 Tomcat),提供“开箱即用”的体验,是构建微服务和 Web 应用的流行工具。

147

2025.12.22

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

271

2025.12.24

Spring Boot企业级开发与MyBatis Plus实战
Spring Boot企业级开发与MyBatis Plus实战

本专题面向 Java 后端开发者,系统讲解如何基于 Spring Boot 与 MyBatis Plus 构建高效、规范的企业级应用。内容涵盖项目架构设计、数据访问层封装、通用 CRUD 实现、分页与条件查询、代码生成器以及常见性能优化方案。通过完整实战案例,帮助开发者提升后端开发效率,减少重复代码,快速交付稳定可维护的业务系统。

32

2026.02.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

22

2026.03.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4.3万人学习

C# 教程
C# 教程

共94课时 | 11.1万人学习

Java 教程
Java 教程

共578课时 | 80.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号