在Qoder中指定JDK和Maven运行AI学习的SpringBoot项目的完整指南

在Qoder中指定JDK和Maven运行AI学习的SpringBoot项目的完整指南

一、项目环境要求

1.1 基础要求

  • JDK版本:17+(项目必须,系统配置的环境变量是JDK 8)
  • Maven版本:3.6+
  • Ollama服务http://localhost:11434
  • 应用端口:885

1.2 环境配置

  • 系统JDK:JDK 8(环境变量指向)
  • 项目JDK :JDK 17(路径:D:\SoftWare\jdk\jdk17
  • Maven路径D:\SoftWare\Maven\apache-maven-3.6.3

二、为什么需要指定JDK和Maven

2.1 必须指定JDK 17的原因

  • Spring Boot 3.x 要求最低 JDK 17
  • Spring AI 框架基于 JDK 17+ 构建
  • 系统环境变量是JDK 8,会导致编译失败

2.2 必须指定Maven的原因

  • 可能使用特定版本的Maven
  • 避免系统环境变量中Maven版本不兼容
  • 确保构建环境一致性

三、指定JDK和Maven的方法

方法1:在PowerShell中临时指定(当前会话有效)

powershell 复制代码
# 设置JDK 17路径
$env:JAVA_HOME = "D:\SoftWare\jdk\jdk17"

# 将JDK 17添加到PATH最前面
$env:PATH = "D:\SoftWare\jdk\jdk17\bin;" + $env:PATH

# 定义Maven路径
$MVN = "D:\SoftWare\Maven\apache-maven-3.6.3\bin\mvn.cmd"

# 验证Java版本(应显示17)
java -version

# 验证Maven
& $MVN -version

方法2:在批处理文件中指定(推荐)

batch 复制代码
@echo off
REM 设置JDK 17路径
set JAVA_HOME=D:\SoftWare\jdk\jdk17

REM 将JDK 17添加到PATH
set PATH=%JAVA_HOME%\bin;%PATH%

REM 设置Maven路径
set MVN=D:\SoftWare\Maven\apache-maven-3.6.3\bin\mvn.cmd

方法3:在pom.xml中指定编译器路径(永久配置)

在pom.xml的<build>标签中添加:

xml 复制代码
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>17</source>
                <target>17</target>
                <fork>true</fork>
                <executable>D:\SoftWare\jdk\jdk17\bin\javac.exe</executable>
            </configuration>
        </plugin>
    </plugins>
</build>

四、交互式批处理脚本实现

4.1 创建启动脚本

创建文件:start.bat(推荐使用英文避免编码问题)

batch 复制代码
@echo off
echo ========================================
echo   Spring AI Ollama Manager
echo ========================================
echo.

REM ========================================
REM 配置区域 - 修改这里的路径即可
REM ========================================
set MVN=D:\SoftWare\Maven\apache-maven-3.6.3\bin\mvn.cmd
set JAVA_HOME=D:\SoftWare\jdk\jdk17
set PATH=%JAVA_HOME%\bin;%PATH%
set PROJECT_DIR=d:\WorkSpace\Gitee\java-demo\AI\spring-ai-alibaba-ollama
REM ========================================

REM Enter project directory
cd /d %PROJECT_DIR%

echo Maven: %MVN%
echo JDK:   %JAVA_HOME%
echo.

REM Check JDK
if not exist "%JAVA_HOME%\bin\java.exe" (
    echo [ERROR] JDK 17 not found: %JAVA_HOME%
    pause
    exit /b 1
)

echo ===== Java Version =====
java -version
echo.

REM Check Maven
if not exist "%MVN%" (
    echo [ERROR] Maven not found: %MVN%
    pause
    exit /b 1
)

echo ===== Maven Version =====
call "%MVN%" -version
echo.

:MENU
echo.
echo ========================================
echo   Please select operation:
echo ========================================
echo 1. Check Environment
echo 2. Build Project (skip tests)
echo 3. Clean and Build
echo 4. Start Project
echo 5. Package Project (JAR)
echo 6. View Dependencies
echo 7. Test API
echo 8. Exit
echo.

set /p choice=Enter choice (1-8): 

if "%choice%"=="1" goto CHECK
if "%choice%"=="2" goto BUILD
if "%choice%"=="3" goto CLEAN_BUILD
if "%choice%"=="4" goto START
if "%choice%"=="5" goto PACKAGE
if "%choice%"=="6" goto DEPS
if "%choice%"=="7" goto TEST
if "%choice%"=="8" goto END
echo Invalid choice, try again
goto MENU

:CHECK
echo.
echo ===== Environment Check =====
echo JDK Path: %JAVA_HOME%
java -version
echo.
echo Maven Path: %MVN%
call "%MVN%" -version
echo.
echo Project: %PROJECT_DIR%
dir pom.xml
echo.
pause
goto MENU

:BUILD
echo.
echo ===== Building Project =====
call "%MVN%" clean install -DskipTests
if %errorlevel% neq 0 (
    echo.
    echo [ERROR] Build FAILED!
    pause
    goto MENU
)
echo.
echo [SUCCESS] Build SUCCESS!
pause
goto MENU

:CLEAN_BUILD
echo.
echo ===== Cleaning Project =====
call "%MVN%" clean
echo.
echo ===== Building Project =====
call "%MVN%" clean install -DskipTests
if %errorlevel% neq 0 (
    echo.
    echo [ERROR] Build FAILED!
    pause
    goto MENU
)
echo.
echo [SUCCESS] Build SUCCESS!
pause
goto MENU

:START
echo.
echo ===== Starting Project =====
echo.
echo Application URLs:
echo   - Chat: http://localhost:885/ai/generate?message=hello
echo   - Health: http://localhost:885/ai/health
echo   - POST: http://localhost:885/ai/chat
echo.
echo Press Ctrl+C to stop application
echo ========================================
echo.
call "%MVN%" spring-boot:run
goto MENU

:PACKAGE
echo.
echo ===== Packaging Project =====
call "%MVN%" clean package -DskipTests
if %errorlevel% neq 0 (
    echo.
    echo [ERROR] Package FAILED!
    pause
    goto MENU
)
echo.
echo [SUCCESS] Package SUCCESS!
echo JAR file: target\sspring-ai-ollama-demo-1.0.jar
echo Run with: java -jar target\sspring-ai-ollama-demo-1.0.jar
pause
goto MENU

:DEPS
echo.
echo ===== Maven Dependencies =====
call "%MVN%" dependency:tree
echo.
pause
goto MENU

:TEST
echo.
echo ===== Testing API =====
echo Testing: http://localhost:885/ai/generate?message=hello
echo.
curl "http://localhost:885/ai/generate?message=hello"
echo.
echo.
pause
goto MENU

:END
echo.
echo Goodbye!
exit /b 0

五、使用步骤详解

5.1 首次使用

  1. 创建脚本文件

    • 在项目根目录创建 start.bat
    • 将上述代码粘贴进去并保存
  2. 检查配置

    • 打开 start.bat,确认路径配置正确:
      • MVN:Maven路径
      • JAVA_HOME:JDK 17路径
      • PROJECT_DIR:项目路径
  3. 运行脚本

    • 双击 start.bat
    • 在Qoder终端输入:start.bat

5.2 操作流程

复制代码
启动脚本
  ↓
自动检查JDK和Maven
  ↓
显示菜单
  ↓
选择操作:
  1. Check Environment  - 检查环境配置
  2. Build Project      - 编译项目(跳过测试)
  3. Clean and Build    - 清理并编译
  4. Start Project      - 启动SpringBoot应用
  5. Package Project    - 打包成JAR
  6. View Dependencies  - 查看依赖树
  7. Test API           - 测试API接口
  8. Exit               - 退出
  ↓
执行完成后返回菜单

测试效果:

5.3 典型使用场景

场景1:首次构建项目

复制代码
1. 运行 start.bat
2. 选择 1 (检查环境)
3. 选择 2 (构建项目)
4. 选择 4 (启动项目)

场景2:修改代码后重新运行

复制代码
1. 运行 start.bat
2. 选择 3 (清理并编译)
3. 选择 4 (启动项目)

场景3:打包部署

复制代码
1. 运行 start.bat
2. 选择 5 (打包项目)
3. 获取JAR文件:target\sspring-ai-ollama-demo-1.0.jar

六、常见问题解决

6.1 构建失败:测试依赖缺失

错误信息:

复制代码
程序包org.junit.jupiter.api不存在
程序包org.springframework.boot.test.context不存在

解决方法:

确保 pom.xml 包含测试依赖:

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

6.2 PowerShell执行策略限制

错误信息:

复制代码
无法加载文件,因为在此系统上禁止运行脚本

解决方法:

使用 .bat 文件而不是 .ps1 文件(已提供)

6.3 端口885被占用

解决方法:

修改 application.yml 中的端口:

yaml 复制代码
server:
  port: 8080  # 改为其他端口

6.4 Ollama连接失败

检查Ollama是否运行:

powershell 复制代码
curl http://localhost:11434/api/tags

启动Ollama:

powershell 复制代码
ollama serve

七、快速命令参考

7.1 手动执行(不用脚本)

powershell 复制代码
# 设置环境
$env:JAVA_HOME = "D:\SoftWare\jdk\jdk17"
$env:PATH = "D:\SoftWare\jdk\jdk17\bin;" + $env:PATH
$MVN = "D:\SoftWare\Maven\apache-maven-3.6.3\bin\mvn.cmd"

# 进入项目目录
cd d:\WorkSpace\Gitee\java-demo\AI\spring-ai-alibaba-ollama

# 编译
& $MVN clean install -DskipTests

# 启动
& $MVN spring-boot:run

7.2 验证环境

powershell 复制代码
# 检查Java版本
java -version

# 检查Maven版本
& "D:\SoftWare\Maven\apache-maven-3.6.3\bin\mvn.cmd" -version

# 检查Ollama
curl http://localhost:11434/api/tags

八、项目结构说明

复制代码
spring-ai-ollama-demo/
├── src/
│   ├── main/
│   │   ├── java/com/badao/ai/
│   │   │   ├── SpringAiDemoApplication.java    # 启动类
│   │   │   └── controller/
│   │   │       └── ChatController.java         # 对话接口
│   │   └── resources/
│   │       └── application.yml                 # 配置文件
│   └── test/
│       └── java/com/badao/ai/
│           └── SpringAiZhipuHelloApplicationTests.java
├── pom.xml                                     # Maven配置
├── start.bat                                   # 启动脚本(新建)
└── README.md

九、API接口说明

项目启动后可访问以下接口:

接口 方法 说明 示例
/ai/generate GET 简单对话 http://localhost:885/ai/generate?message=你好
/ai/chat POST JSON对话 {"message": "你好"}
/ai/health GET 健康检查 http://localhost:885/ai/health

十、总结

推荐工作流

  1. 创建 start.bat 脚本(一次性)
  2. 双击运行脚本
  3. 选择对应操作
  4. 完成构建和启动

关键要点

必须指定JDK 17 (通过JAVA_HOME)

必须指定Maven路径 (通过MVN变量)

使用批处理文件 (避免PowerShell策略问题)

添加测试依赖 (确保编译成功)

英文脚本内容(避免编码问题)

相关推荐
孙子荀1 小时前
【游戏NPC】(二)哲学本质 Evaluation-Grounded NPC Building System
人工智能
感谢地心引力1 小时前
在Claude Code里面使用Deepseek-v4,支持mac和Windows双系统
人工智能·windows·macos·ai·deepseek·claude code
郑寿昌2 小时前
清华开源智能体PilotDeck:智能路由技术大幅降低AI落地成本
人工智能·开源
老码观察2 小时前
设计模式实战解读(七):适配器模式——让不兼容的接口无缝协作
java·设计模式·适配器模式
garmin Chen2 小时前
rabbitmq(1):核心机制与 SpringAMQP 详解
java·rabbitmq·java-rabbitmq
reesn2 小时前
Claude Code 工作流教程
人工智能
不脱发的程序猿2 小时前
如何创建一个标准Skill,让嵌入式经验真正复用起来
人工智能·单片机·嵌入式硬件·嵌入式·skill
折哥的程序人生 · 物流技术专研2 小时前
Qoder 1.0 完全指南:从安装到Agents驱动开发实战
开发语言·人工智能·python·ai编程
学术小白人2 小时前
IEEE出版 | 第二届能源互联网与电气工程国际学术会议(EIEE 2026)
人工智能·神经网络·物联网·能源·rdlink研发家·学术会议论文