在 Java 开发与运维中,“启动 Java 服务” 是核心操作。无论是简单的 Java 小程序,还是 Spring Boot、Dubbo 等框架构建的企业级服务,都需通过特定命令启动。很多开发者常困惑于 “不同场景用什么命令”“后台启动怎么配置”“启动后如何管理进程”,小编将分场景拆解 Java 服务的启动方法,覆盖 Windows、Linux 两大系统,详解命令语法与实操技巧,助你高效启动并管理 Java 服务。
一、Java 服务启动前的核心前提
启动 Java 服务前需完成两项准备工作,避免因环境问题导致启动失败:
1. 确认 JDK 已正确安装配置
Java 服务依赖 JDK(Java Development Kit)的运行环境,需先验证 JDK 是否就绪:
验证命令:在终端(Linux)或命令提示符(Windows)输入java -version,若显示 JDK 版本信息(如java version "1.8.0_381"),说明环境正常;
若报错 “java 不是内部或外部命令”:需配置JAVA_HOME环境变量(Windows 在 “系统属性→高级→环境变量” 中设置,Linux 在/etc/profile或~/.bashrc中添加export JAVA_HOME=/usr/local/jdk1.8.0_381),并将%JAVA_HOME%\bin(Windows)或$JAVA_HOME/bin(Linux)加入PATH。
2. 准备 Java 服务的启动文件
不同类型的 Java 服务,启动依赖的文件不同:
简单 Java 程序:需编译后的.class文件(如HelloWorld.class),或打包后的.jar文件(通过javac编译、jar命令打包生成);
框架服务(Spring Boot/Dubbo):通常是打包后的可执行.jar文件(如spring-boot-demo-1.0.0.jar),由 Maven/Gradle 构建生成,内置 Tomcat 等容器,可直接启动;
传统 Web 服务(WAR 包):需部署到 Tomcat、Jetty 等容器,通过启动容器间接启动 Java 服务(后文单独说明)。
二、Java 服务启动方法:分场景详解(Windows/Linux 通用)
根据 Java 服务的类型(简单程序 / 框架服务)与启动需求(前台 / 后台),需选择不同的命令,核心场景分为三类:
(一)场景 1:启动简单 Java 程序(.class/.jar 文件)
适用于开发测试阶段的小型 Java 程序,如工具类、控制台应用,启动命令简洁直观:
1. 启动.class 文件(未打包的单个类)
若服务仅一个编译后的.class文件(如HelloWorld.class,含main方法),直接用java命令启动:
命令语法:java 类名(无需加.class后缀);
实操示例:
假设HelloWorld.class在D:\java-project目录(Windows)或/home/java-project目录(Linux):
Windows:先cd D:\java-project,再输入java HelloWorld,程序会在前台运行,输出控制台日志;
Linux:先cd /home/java-project,再输入java HelloWorld,效果与 Windows 一致。
注意:若类属于包(如com.example.HelloWorld),需进入包的上层目录,命令改为java com.example.HelloWorld(如类文件在com/example/HelloWorld.class,需在com的上层目录执行命令)。
2. 启动可执行.jar 文件(打包后的程序)
若程序已打包为可执行.jar文件(需在MANIFEST.MF中指定Main-Class),用java -jar命令启动:
命令语法:java -jar jar文件名;
实操示例:
启动demo.jar文件:
Windows:cd D:\java-project → java -jar demo.jar;
Linux:cd /home/java-project → java -jar demo.jar;
特点:前台启动,终端关闭则服务停止,适合开发测试;若需传递参数(如配置文件路径),可在命令后添加,如java -jar demo.jar --spring.profiles.active=prod(Spring Boot 程序指定生产环境配置)。
(二)场景 2:启动 Spring Boot/Dubbo 等框架服务(企业级常用)
企业级 Java 服务多基于 Spring Boot、Dubbo 等框架开发,打包为可执行.jar文件,需区分 “前台启动”(便于调试)与 “后台启动”(生产环境常用):
1. 前台启动(开发调试用)
与简单.jar 文件启动命令一致,适合开发阶段查看实时日志:
命令:java -jar spring-boot-demo.jar;
优势:启动后直接在终端输出日志,按Ctrl+C可快速停止服务,方便调试时查看报错信息;
注意:Spring Boot 服务默认端口为 8080,若端口被占用,可通过命令指定端口:java -jar spring-boot-demo.jar --server.port=8081。
2. 后台启动(生产环境用)
生产环境需服务在后台持续运行,即使终端关闭也不停止,Windows 与 Linux 的实现方式不同:
(1)Linux 系统:用nohup或screen实现后台启动
方法 1:nohup命令(最常用)
语法:nohup java -jar jar文件名 > 日志文件名 2>&1 &
示例:启动spring-boot-demo.jar并将日志输出到service.log:
nohup java -jar spring-boot-demo.jar > service.log 2>&1 &
命令解析:nohup(忽略终端关闭信号)、> service.log(将标准输出重定向到日志文件)、2>&1(将错误输出合并到标准输出)、最后一个&(后台运行);
查看日志:tail -f service.log(实时查看日志)、cat service.log(查看全部日志);
停止服务:先通过ps -ef | grep java找到进程 ID(PID),再用kill -9 PID终止(如ps -ef | grep spring-boot-demo.jar找到 PID 为 1234,执行kill -9 1234)。
方法 2:screen命令(需安装,适合需后续交互的场景)
若需后续进入服务的终端界面(如查看实时日志),可通过screen创建会话:
安装 screen(CentOS:yum install screen,Ubuntu:apt install screen);
创建会话:screen -S java-service(java-service为会话名);
在会话中启动服务:java -jar spring-boot-demo.jar;
脱离会话:按Ctrl+A+D(服务仍在后台运行);
重新进入会话:screen -r java-service;
终止服务:在会话中按Ctrl+C,或退出会话后用kill命令终止进程。
(2)Windows 系统:用 “任务计划程序” 或start /b后台启动
方法 1:start /b命令(临时后台启动)
语法:start /b java -jar jar文件名 > 日志文件名 2>&1
示例:start /b java -jar spring-boot-demo.jar > service.log 2>&1
特点:服务在后台运行,命令提示符可关闭,但需通过任务管理器终止进程(找到java.exe进程,右键 “结束任务”);
缺点:重启电脑后服务不自动启动,适合临时需求。
方法 2:注册为 Windows 服务(开机自启,生产推荐)
若需服务开机自动启动,可将 Java 服务注册为 Windows 系统服务,需借助工具(如winsw):
下载winsw(官网:https://github.com/winsw/winsw),重命名为java-service.exe;
创建配置文件java-service.xml(与java-service.exe同目录),内容示例:
TypeScript取消自动换行复制
<service>
<id>JavaService</id>
<name>Java Service(Spring Boot Demo)</name>
<description>Java服务(Spring Boot Demo)</description>
<executable>java</executable>
<arguments>-jar "D:\java-project\spring-boot-demo.jar"</arguments>
<logpath>D:\java-project\logs</logpath>
<logmode>rotate</logmode>
</service>
安装服务:在命令提示符(管理员权限)中执行java-service.exe install;
启动服务:net start JavaService(或在 “服务” 窗口手动启动);
停止 / 卸载服务:net stop JavaService、java-service.exe uninstall。
(三)场景 3:启动传统 Web 服务(WAR 包部署到容器)
若 Java 服务是 WAR 包(如基于 SSH、SSM 框架的 Web 项目),需部署到 Tomcat、Jetty 等容器,通过启动容器间接启动服务:
1. Tomcat 容器启动示例(Windows/Linux 通用)
步骤 1:部署 WAR 包
将demo.war文件复制到 Tomcat 的webapps目录(如 Linux 的/usr/local/tomcat/webapps,Windows 的D:\tomcat\webapps);
步骤 2:启动 Tomcat
Linux:进入 Tomcat 的bin目录,执行./startup.sh(前台启动)或nohup ./startup.sh > catalina.out 2>&1 &(后台启动);
Windows:进入bin目录,双击startup.bat(前台启动,会弹出终端窗口),或执行start /b startup.bat(后台启动);
访问服务:启动后通过http://服务器IP:8080/demo访问(demo为 WAR 包名,8080 为 Tomcat 默认端口);
停止容器:Linux 执行./shutdown.sh,Windows 双击shutdown.bat。
三、Java 服务启动常见问题排查
“端口被占用” 报错
用端口查看命令找到占用进程并终止:
Linux:ss -tuln | grep 8080(查看 8080 端口占用),kill -9 PID终止进程;
Windows:netstat -ano | findstr "8080",在任务管理器中结束对应 PID 的进程。
“找不到主类” 报错
检查.jar 文件的MANIFEST.MF是否配置Main-Class(可通过jar -tf demo.jar | grep MANIFEST.MF查看路径,用cat或记事本打开文件验证);若为 Spring Boot 项目,确保pom.xml中配置了spring-boot-maven-plugin插件(负责打包可执行.jar)。
启动后日志无输出或服务无响应
查看日志文件(如service.log)定位错误,常见原因:配置文件路径错误(需通过--spring.config.location指定)、数据库连接失败(检查数据库地址与账号密码)、依赖缺失(确保.jar 包打包完整,无遗漏依赖)。
Java 服务启动需根据 “程序类型”(.class/.jar/WAR)与 “运行环境”(Windows/Linux)选择命令:简单程序用java或java -jar前台启动,开发调试便捷;企业级框架服务(Spring Boot)在 Linux 用nohup后台启动并记录日志,在 Windows 推荐注册为系统服务实现开机自启;传统 Web 服务需部署到 Tomcat 等容器启动。掌握这些方法,结合日志排查问题,就能高效启动并管理 Java 服务,保障服务稳定运行。