添加服务启动方式说明文档

更新内容:
1. 在单机部署文档中增加 4.8 节,详细说明服务启动方式
2. 在部署运维文档中增加 1.5 节,说明开发环境和生产环境的启动方式

关键约束:
- 明确说明不能使用 java -jar 方式启动(瘦包打包导致)
- 开发环境:使用 mvn spring-boot:run 或 IDE 直接运行
- 生产环境:使用 bin/start.sh 脚本启动
- 解释技术原因:Maven Assembly Plugin 瘦包打包、Manifest 配置缺失、类加载机制

调试建议:
- 开发环境推荐使用 IDE 或 Maven 插件
- 生产环境始终使用启动脚本
- 提供日志查看、进程检查等调试方法
This commit is contained in:
zhangjf 2026-03-01 19:05:04 +08:00
parent 46e30c8b06
commit 645056eaf0
3 changed files with 131 additions and 1 deletions

View File

@ -622,6 +622,69 @@ spring:
/opt/fundplatform/deploy/status.sh
```
### 4.8 服务启动方式说明(重要)
**⚠️ 重要提示:** 为了打包发布的需要,每个服务 JAR 都采用瘦包方式打包(依赖分离),因此**不能**使用 `java -jar fund*.jar` 方式执行。
#### 4.8.1 正确的启动方式
**方式一:使用启动脚本(推荐)**
```bash
# 使用服务自带的启动脚本
cd /opt/fundplatform/deploy/fund-sys
./bin/start.sh
# 或使用一键启动脚本
cd /opt/fundplatform/deploy
./start-all.sh
```
**方式二:使用 Maven Spring Boot 插件**
```bash
# 开发环境下,可以使用 Maven 插件启动
cd fund-sys
mvn spring-boot:run
```
**方式三:手动指定类路径(不推荐)**
```bash
# 如果必须手动启动,需要指定完整的类路径
cd /opt/fundplatform/deploy/fund-sys
java -cp "lib/*:conf/" com.fundplatform.sys.SysApplication
```
#### 4.8.2 错误的启动方式
**❌ 错误示例:**
```bash
# 以下方式是错误的,会导致 ClassNotFoundException
cd /opt/fundplatform/deploy/fund-sys/lib
java -jar fund-sys.jar
# 或在开发环境
cd fund-sys/target
java -jar fund-sys-0.0.1-SNAPSHOT.jar
```
#### 4.8.3 为什么不能使用 java -jar
1. **瘦包打包方式**:项目使用 Maven Assembly Plugin 将依赖 JAR 分离到 `lib/` 目录
2. **Manifest 配置**:主 JAR 包的 MANIFEST.MF 中没有 Class-Path 属性
3. **类加载机制**JVM 无法自动找到 `lib/` 目录下的依赖
#### 4.8.4 调试建议
**开发环境调试:**
- 使用 IDE 直接运行 Application 类
- 或使用 `mvn spring-boot:run` 命令
- 避免使用 `java -jar` 命令
**生产环境调试:**
- 始终使用 `bin/start.sh` 脚本启动
- 查看日志:`tail -f /datacfs/applogs/fund-sys/info.log`
- 检查进程:`ps aux | grep fund-sys`
- 查看端口:`netstat -tlnp | grep 8100`
## 五、部署操作指南
### 5.1 首次部署

View File

@ -161,10 +161,77 @@ npm run dev
# 移动端H5http://localhost:8080
# 网关地址http://localhost:8000
# Nacos 控制台http://localhost:8048/nacos
# Grafana 监控http://localhost:3000 (Docker环境) 或 http://localhost:3001 (本地开发)
# Grafana 监控http://localhost:3000 (Docker 环境) 或 http://localhost:3001 (本地开发)
# Prometheushttp://localhost:9090
```
### 1.5 服务启动方式说明(重要)
**⚠️ 重要提示:** 为了打包发布的需要,每个服务 JAR 都采用瘦包方式打包(依赖分离),因此**不能**使用 `java -jar` 方式执行。
#### 1.5.1 开发环境启动方式
**✅ 正确的方式:**
1. **使用 Maven 插件(推荐)**
```bash
cd fund-sys
mvn spring-boot:run
```
2. **使用 IDE 直接运行**
- 找到对应的 Application 类(如 `SysApplication.java`
- 右键 -> Run 运行
**❌ 错误的方式:**
```bash
# 以下方式会导致 ClassNotFoundException
cd fund-sys/target
java -jar fund-sys-0.0.1-SNAPSHOT.jar
```
#### 1.5.2 生产环境启动方式
**✅ 正确的方式:**
1. **使用启动脚本(推荐)**
```bash
cd /opt/fundplatform/deploy/fund-sys
./bin/start.sh
```
2. **手动指定类路径**
```bash
cd /opt/fundplatform/deploy/fund-sys
java -cp "lib/*:conf/" com.fundplatform.sys.SysApplication
```
**❌ 错误的方式:**
```bash
# 以下方式会导致 ClassNotFoundException
cd /opt/fundplatform/deploy/fund-sys/lib
java -jar fund-sys.jar
```
#### 1.5.3 为什么不能使用 java -jar
1. **瘦包打包方式**:项目使用 Maven Assembly Plugin 将依赖 JAR 分离到 `lib/` 目录
2. **Manifest 配置**:主 JAR 包的 MANIFEST.MF 中没有 Class-Path 属性
3. **类加载机制**JVM 无法自动找到 `lib/` 目录下的依赖
#### 1.5.4 调试建议
**开发环境:**
- ✅ 使用 IDE 直接运行 Application 类
- ✅ 使用 `mvn spring-boot:run` 命令
- ❌ 避免使用 `java -jar` 命令
**生产环境:**
- ✅ 始终使用 `bin/start.sh` 脚本启动
- ✅ 查看日志:`tail -f /datacfs/applogs/fund-sys/info.log`
- ✅ 检查进程:`ps aux | grep fund-sys`
- ✅ 查看端口:`netstat -tlnp | grep 8100`
---
## 二、Docker Compose 部署