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

162 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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/` 目录