首页 > Java > java教程 > 正文

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

P粉602998670
发布: 2025-09-19 10:06:01
原创
433人浏览过
答案:配置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。

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

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

易森网络企业版
易森网络企业版

如果您是新用户,请直接将本程序的所有文件上传在任一文件夹下,Rewrite 目录下放置了伪静态规则和筛选器,可将规则添加进IIS,即可正常使用,不用进行任何设置;(可修改图片等)默认的管理员用户名、密码和验证码都是:yeesen系统默认关闭,请上传后登陆后台点击“核心管理”里操作如下:进入“配置管理”中的&ld

易森网络企业版 0
查看详情 易森网络企业版

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

/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应用了。

以上就是如何在Linux系统中配置Java和Spring环境的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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