# 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 # 强制停止 kill -9 ``` ## 常见问题 ### 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/` 目录