Files
gangyan/chat_web_backend/编译和启动说明.md

162 lines
3.6 KiB
Markdown
Raw Permalink Normal View History

# chat_web_backend 编译和启动说明
## 编译步骤
### ⚠️ 重要提示
**项目需要使用 Java 11 来编译**Java 21 与旧版 Lombok 不兼容)
### 方法1使用编译脚本推荐
```bash
cd /home/gc/gangyan/chat_web_backend
./compile.sh
```
### 方法2手动编译
```bash
cd /home/gc/gangyan/chat_web_backend
# 设置使用 Java 11
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
# 编译项目(跳过测试)
mvn clean package -DskipTests
```
### 方法3如果系统默认就是 Java 11
```bash
cd /home/gc/gangyan/chat_web_backend
mvn clean package -DskipTests
```
### 3. 完整编译(包含测试,时间较长)
```bash
mvn clean package
```
### 4. 如果编译失败,可以尝试:
```bash
# 清理本地仓库缓存
mvn clean
# 强制更新依赖
mvn clean package -U -DskipTests
# 离线模式(如果网络有问题)
mvn clean package -o -DskipTests
```
## 编译输出
编译成功后JAR文件位置
```
target/chat_web_yj.jar
```
## 启动方式
### ⚠️ 重要:必须使用 Java 11 运行
**原因**Java 21 与 Dozer/JAXB 不兼容,会导致启动失败。
### 方式1使用启动脚本推荐
```bash
cd /home/gc/gangyan/chat_web_backend
./start.sh
```
### 方式2手动启动使用 Java 11
```bash
cd /home/gc/gangyan/chat_web_backend
# 设置使用 Java 11
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
# 启动应用
java -jar target/chat_web_yj.jar --spring.profiles.active=yj
```
### 方式3后台运行
```bash
cd /home/gc/gangyan/chat_web_backend
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
nohup java -jar target/chat_web_yj.jar --spring.profiles.active=yj > /tmp/chat_backend.log 2>&1 &
```
### 方式4指定JVM参数
```bash
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
java -Xms512m -Xmx2048m -jar target/chat_web_yj.jar --spring.profiles.active=yj
```
## 检查服务状态
启动后,检查端口是否监听:
```bash
netstat -tuln | grep 8099
# 或
ss -tuln | grep 8099
```
测试API是否正常
```bash
curl http://localhost:8099/chat_web_backend/app/api/config
```
## 停止服务
找到进程并停止:
```bash
# 查找进程
ps aux | grep chat_web_yj
# 停止进程替换PID为实际进程ID
kill <PID>
# 强制停止
kill -9 <PID>
```
## 常见问题
### 1. 启动时 Dozer/JAXB 错误
**错误信息**`Cannot invoke "java.lang.reflect.Method.invoke" because "com.sun.xml.bind.v2.runtime.reflect.opt.Injector.defineClass" is null`
**解决方案**
- ✅ 已添加 JAXB 依赖到 pom.xml
- ✅ 必须使用 **Java 11** 运行(不要用 Java 21
- 使用启动脚本 `./start.sh` 会自动使用 Java 11
### 2. 编译时依赖下载失败
- 检查网络连接
- 尝试使用国内Maven镜像源
- 使用 `-U` 参数强制更新
### 3. 端口被占用
- 检查8099端口`netstat -tuln | grep 8099`
- 修改 `application-yj.yml` 中的端口配置
### 4. 数据库连接失败
- 当前配置使用远程数据库:`127.0.0.1:3306`
- 数据库名:`chat_LLM`
- 确保网络可以访问远程数据库服务器
### 5. Redis连接失败
- 当前配置使用远程Redis`127.0.0.1:6379`
- 确保网络可以访问远程Redis服务器
## 配置文件位置
主要配置文件:
- `src/main/resources/application.yml` - 主配置
- `src/main/resources/application-yj.yml` - yj环境配置当前激活
## 日志位置
日志文件位置根据logback配置
- 控制台输出
- 如果配置了文件日志,通常在项目根目录的 `logs/` 目录