Java工程如何在Linux环境下运行?

在Linux环境下运行Java工程是后端开发中的常见需求,整个过程涉及环境配置、项目编译、依赖管理、程序运行及后台服务管理等多个环节,以下是详细的操作步骤和注意事项,帮助顺利完成Java工程的部署与运行。

java工程如何在linux下运行

环境准备:安装与配置JDK

Java工程的运行依赖于Java Development Kit(JDK),需先确保Linux系统已安装正确版本的JDK,以下是几种常见的安装方式:

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

以Ubuntu/Debian系统为例,使用apt命令安装OpenJDK(以JDK 11为例):

sudo apt update
sudo apt install openjdk-11-jdk

安装后验证是否成功:

java -version  # 查看Java版本
javac -version # 查看编译器版本

手动安装JDK(适用于特定版本)

若需安装Oracle JDK或其他未收录在包管理器中的版本,可手动下载安装:
(1)从Oracle官网或Adoptium下载JDK的tar.gz包(如OpenJDK 11的jdk-11.0.13_linux-x64_bin.tar.gz);
(2)将安装包上传至Linux系统(可通过scpwget下载),解压到指定目录(如/usr/local/):

sudo tar -zxvf jdk-11.0.13_linux-x64_bin.tar.gz -C /usr/local/

(3)配置环境变量,编辑/etc/profile或用户家目录下的~/.bashrc文件,添加以下内容:

export JAVA_HOME=/usr/local/jdk-11.0.13
export PATH=$JAVA_HOME/bin:$PATH

(4)使配置生效:

source /etc/profile  # 或 source ~/.bashrc

JDK安装方式对比

安装方式 优点 缺点 适用场景
包管理器安装 简单快速,自动依赖管理 版本可能较旧 开发测试环境,无特殊版本需求
手动安装 可灵活选择版本,适合生产环境 需手动配置环境变量,依赖需自行处理 需要特定JDK版本的生产环境

项目编译与依赖管理

Java工程通常使用构建工具(如Maven或Gradle)管理依赖和编译代码,需先安装对应工具并执行构建。

使用Maven构建

(1)安装Maven(以Ubuntu为例):

sudo apt install maven

(2)进入项目根目录(包含pom.xml文件),执行编译命令:

mvn clean compile  # 编译源代码,生成target目录
mvn package       # 打包为jar包(默认生成jar文件于target/目录下)

若项目包含依赖,Maven会自动下载并管理,无需手动处理jar包路径。

使用Gradle构建

(1)安装Gradle(需先安装JDK,下载二进制包并配置环境变量):

# 下载Gradle(如gradle-7.2-bin.zip),解压到/usr/local/
sudo unzip gradle-7.2-bin.zip -d /usr/local/
# 配置环境变量(~/.bashrc)
export GRADLE_HOME=/usr/local/gradle-7.2
export PATH=$GRADLE_HOME/bin:$PATH
source ~/.bashrc

(2)进入项目根目录(包含build.gradle文件),执行构建:

gradle build  # 编译并打包,生成jar包于build/libs/目录下

普通Java项目(无构建工具)

若项目未使用Maven/Gradle,需手动编译并处理依赖:
(1)编译源代码(假设源码在src/目录,输出到classes/):

mkdir -p classes
javac -d classes src/*.java

(2)运行时需手动指定依赖jar包路径(通过-cp参数):

java -cp "classes:lib/*.jar" com.example.MainClass  # Linux下用冒号分隔路径

运行Java程序

编译完成后,可通过java命令运行程序,根据项目类型选择不同的运行方式。

运行普通jar包

若项目已打包为可执行jar包(包含Main-Class清单),直接运行:

java -jar target/your-app.jar

若jar包未包含依赖(如Maven的jar打包类型),需通过-cp指定依赖路径:

java -cp "target/your-app.jar:lib/*" com.example.MainClass

运行Spring Boot等fat jar

Spring Boot项目通常打包为“fat jar”(包含所有依赖),可直接运行:

java -jar target/spring-boot-app.jar --server.port=8081  # 可附带启动参数

后台运行与日志管理

直接运行java -jar命令时,终端关闭会导致程序终止,需使用后台运行工具:

  • nohup:让程序忽略挂断信号,输出日志到文件
    nohup java -jar your-app.jar > app.log 2>&1 &  # 后台运行,日志输出到app.log
  • screen:创建会话,可断开连接后重新 attach
    screen -S java_app  # 创建新会话
    java -jar your-app.jar  # 在会话中运行程序
    # 按Ctrl+A+D暂时断开会话,后续通过screen -r java_app恢复

后台服务管理(systemd)

生产环境中,通常将Java程序注册为systemd服务,实现开机自启、日志管理、进程监控等功能。

创建服务文件

编辑/etc/systemd/system/java-app.service如下:

[Unit]
Description=Java Application Service
After=network.target
[Service]
User=javauser  # 运行服务的用户(需提前创建)
WorkingDirectory=/path/to/your/app
ExecStart=/usr/bin/java -jar your-app.jar --spring.profiles.active=prod
ExecStop=/bin/kill -15 $MAINPID
SuccessExitStatus=143
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target

启动并管理服务

systemctl daemon-reload  # 重新加载服务配置
systemctl start java-app  # 启动服务
systemctl enable java-app # 开机自启
systemctl status java-app # 查看服务状态
journalctl -u java-app -f # 查看实时日志

常见问题排查

  1. java: command not found:检查JDK是否安装成功,JAVA_HOMEPATH是否正确配置。
  2. Error: Could not find or load main class
    • 检查-cp路径是否正确(Linux下用冒号分隔);
    • 确认包名与类名是否匹配(如com.example.MainClass);
    • 若为jar包,检查META-INF/MANIFEST.MF中的Main-Class是否配置正确。
  3. 内存溢出(OutOfMemoryError:调整JVM参数,如java -Xms512m -Xmx2048m -jar your-app.jar(初始堆512m,最大堆2g)。

相关问答FAQs

Q1: 如何让Java程序在Linux开机时自动启动?
A1: 可通过两种方式实现:
(1)使用nohup结合&后台运行,并添加到/etc/rc.local文件(需赋予执行权限chmod +x /etc/rc.local);
(2)推荐使用systemd服务(如上文所述),通过systemctl enable设置开机自启,更适合生产环境,支持依赖管理和进程监控。

Q2: 运行jar包时提示“no main manifest attribute”,如何解决?
A2: 该错误通常表示jar包未正确配置Main-Class入口点,解决方法:
(1)若使用Maven,检查pom.xml中是否添加maven-jar-plugin并配置Main-Class

   <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-jar-plugin</artifactId>
       <version>3.2.0</version>
       <configuration>
           <archive>
               <manifest>
                   <mainClass>com.example.MainClass</mainClass>
               </manifest>
           </archive>
       </configuration>
   </plugin>

(2)若为手动打包,可通过jar cvfe your.jar com.example.MainClass *.class命令创建包含主类的jar包;
(3)若依赖未包含,可使用java -cp "your.jar:lib/*" com.example.MainClass直接指定主类运行。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/20987.html

(0)
酷番叔酷番叔
上一篇 2025年8月31日 17:39
下一篇 2025年8月31日 17:57

相关推荐

  • Linux查看错误日志的命令有哪些?

    Linux系统中的错误日志是排查问题、监控系统运行状态的重要依据,通过查看日志可以快速定位故障原因,无论是系统内核错误、服务异常还是应用程序崩溃,都会在日志中留下记录,本文将详细介绍Linux查看错误日志的多种方法,包括常用命令、日志文件位置及高级过滤技巧,帮助用户高效获取错误信息,系统日志文件:错误信息的集中……

    2025年9月18日
    12100
  • 如何快速查看Linux网卡驱动?

    方法 1:通过 lspci 命令(推荐)原理:列出 PCI 设备详情,直接关联网卡型号与驱动名称,操作步骤:lspci -v | grep -iA 10 "network\|ethernet"输出示例:00:1f.6 Ethernet controller: Intel Corporatio……

    2025年6月15日
    14800
  • 虚拟机linux如何全屏显示

    虚拟机中,可通过安装VMware Tools或相应工具,然后尝试快捷键(如Ctrl+

    2025年8月17日
    15500
  • linux如何新建c文件类型

    在Linux系统中,新建C文件是程序开发的基础操作,掌握多种方法能提升效率,C文件通常以.c为后缀,源代码文件需遵循C语言语法规范,同时需配合编译器(如GCC)生成可执行程序,以下是具体操作步骤和注意事项,通过命令行新建C文件命令行是Linux环境下最常用的操作方式,以下介绍几种主流方法:使用touch命令创建……

    2025年10月5日
    14200
  • 怎么安装Linux系统?超详细新手教程必看!

    准备工作(关键步骤)选择 Linux 发行版推荐新手使用:Ubuntu、Linux Mint、Fedora(访问官网下载最新 ISO 镜像),企业用户可选:CentOS Stream 或 Debian,验证镜像:下载后务必校验 SHA256 值(官方提供),避免文件损坏,硬件要求最低配置:双核 CPU、4GB……

    2025年7月24日
    15600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信