打包提示词
使用说明(给人看):把下面【正文】整段复制粘贴给另一个 AI。 该 AI 会读取
E:\C\cDownKeShe\、E:\AI\zcode\object\ke-she\refactored\、E:\SQL\mysql\,在E:\AI\zcode\object\ke-she\dist\下产出可分发的GenshinRPG.zip。 执行 AI 需要:能读写文件、能跑javac/java、能运行 bat、能调 powershell 探测端口、能在 Windows 上启停 mysqld。 同目录《打包计划书.md》是详细版,应一并读取。
正文(以下整段复制 ↓↓↓)
Section titled “正文(以下整段复制 ↓↓↓)”你是一名 Java + 运维工程师,现在要把一个学生课设项目打成一个解压即用、内置免安装 MySQL、对方装 JDK 就能跑的 Windows zip 包。
- 默认包原版:
E:\C\cDownKeShe\(不要改它,只读参考) - 重构版(分包):
E:\AI\zcode\object\ke-she\refactored\(以此为基础) - 内置 MySQL 源:
E:\SQL\mysql\(1.1GB,需大幅瘦身) - 产出目录:
E:\AI\zcode\object\ke-she\dist\ - 同目录《打包计划书.md》—— 必读,含完整瘦身清单与脚本模板。
红线(违反即失败)
Section titled “红线(违反即失败)”- DBConnector.java 只改 MySQL 路径相关行,把硬编码的
E:\\SQL\\mysql\\...改成相对当前工作目录的mysql\\...。其余代码(密码候选["","root","123456"]、连接串jdbc:mysql://localhost:3306/...、库名genshin_rpg、Thread.sleep(4000)、连不上则System.exit(1)、所有数值/UI/文案)一字不改。 - 不要改任何其他 .java 文件。
- 保留 MySQL 的 LICENSE 和 README 文件(GPL 合规)。
- 预编译好的 bin\ 必须能跑(对方双击 run.bat 直接运行,不强制对方编译)。
- 全程不修改
E:\C\cDownKeShe\和E:\SQL\mysql\(只读复制源)。
产出目录结构
Section titled “产出目录结构”在 E:\AI\zcode\object\ke-she\dist\genshinrpg\ 下构建:
GenshinRPG/├─ run.bat ← 用户双击入口├─ start_mysql.bat ← 端口探测+动态生成my.ini+首次初始化+后台启动mysqld├─ stop_mysql.bat ← 关闭本包启动的 mysqld├─ mysql/ ← 瘦身后的免安装 MySQL(~70MB)│ ├─ bin/mysqld.exe + 同目录所有 *.dll│ ├─ share/ (字符集/错误消息/时区,启动必需)│ ├─ lib/libmysql.dll + lib/plugin/ + lib/mecab/│ ├─ data/ (干净data:含 mysql/、genshin_rpg/、sys/、performance_schema/、*.pem;删掉 binlog.*、*.err、*.pid、auto.cnf、ib_logfile*、ibdata1、undo_*、#innodb_temp)│ ├─ LICENSE README (GPL,必带)│ └─ my.ini (由 start_mysql.bat 动态生成,不静态写死)├─ lib/mysql-connector-j-8.0.33.jar├─ bin/ ← 预编译的 class(com\genshin\rpg\... 结构)├─ src/ ← 重构版源码(com\genshin\rpg\...)├─ db/genshin_rpg.sql ← 建库脚本(兜底/参考)├─ README.txt ← 给最终用户的使用说明└─ .gitignoreMySQL 瘦身清单(必删,否则体积爆)
Section titled “MySQL 瘦身清单(必删,否则体积爆)”从 E:\SQL\mysql\ 复制到 dist\genshinrpg\mysql\ 后,删除:
bin\*.pdb(共约 360MB,含 mysqld.pdb 333M、libprotobuf-debug.pdb 等)bin\下除mysqld.exe之外的所有.exe(mysql.exe、mysqladmin.exe、mysqldump.exe、mysqlcheck.exe、mysqlimport.exe、mysqlshow.exe、mysqlslap.exe、mysqlpump.exe、mysqlbinlog.exe、mysql_migrate_keyring.exe、mysql_upgrade.exe、mysql_secure_installation.exe、perror.exe、myisamchk.exe、myisampack.exe、myisam_ftdump.exe 等)bin\里与 mysqld 同目录的.dll保留(VC++运行时)lib\*.lib(libmysql.lib、mysqlclient.lib 46M、mysqlservices.lib)lib\private\include\docs\data\binlog.*data\*.errdata\*.piddata\auto.cnfdata\ib_logfile*data\ibdata1data\undo_*data\#innodb_tempdata\mysql.sock保留:bin\mysqld.exe+bin\*.dll、share\、lib\libmysql.dll、lib\plugin\、lib\mecab\、LICENSE、README、data\mysql、data\sys、data\performance_schema、data\genshin_rpg、data\*.pem、data\ib_buffer_pool。
DBConnector.java 改动(精确)
Section titled “DBConnector.java 改动(精确)”文件:src\com\genshin\rpg\dao\DBConnector.java,定位到含 E:\\SQL\\mysql 的那段(connectDB 方法内,约 50-65 行)。
把:
File mysqlExe = new File("E:\\SQL\\mysql\\bin\\mysqld.exe");File myIni = new File("E:\\SQL\\mysql\\my.ini");if (mysqlExe.exists() && myIni.exists()) { ProcessBuilder pb = new ProcessBuilder( mysqlExe.getAbsolutePath(), "--defaults-file=" + myIni.getAbsolutePath() ); pb.directory(new File("E:\\SQL")); pb.start(); Thread.sleep(4000); connected = tryConnect();}改成:
// 内置 MySQL 子目录(相对当前工作目录,即包根目录)File mysqlDir = new File("mysql");File mysqlExe = new File(mysqlDir, "bin/mysqld.exe");File myIni = new File(mysqlDir, "my.ini");if (mysqlExe.exists() && myIni.exists()) { ProcessBuilder pb = new ProcessBuilder( mysqlExe.getAbsolutePath(), "--defaults-file=" + myIni.getAbsolutePath() ); pb.directory(mysqlDir.getAbsoluteFile()); pb.redirectErrorStream(true); pb.start(); Thread.sleep(4000); // 等待 MySQL 启动(原值,勿改) connected = tryConnect();}只改这一段,其余包括上面的 tryConnect() 和下面的失败 System.exit(1) 全部保留。
start_mysql.bat(动态生成 my.ini + 首次初始化)
Section titled “start_mysql.bat(动态生成 my.ini + 首次初始化)”要点:① 用 powershell 探测 3306 端口,已开则复用跳过;② 动态生成 mysql\my.ini(basedir/datadir 用本机绝对路径);③ 若 mysql\data\mysql 不存在则 mysqld --initialize-insecure;④ 后台启动 mysqld 并轮询端口直到就绪(最多 30 秒)。my.ini 里加 skip-grant-tables 让 root 免密(匹配代码密码候选 "")。完整模板见《打包计划书.md》第 5.1 节,照抄即可。
run.bat(用户入口)
Section titled “run.bat(用户入口)”@echo offchcp 65001 >nulcd /d "%~dp0"echo 原神文字战斗模拟系统 - 启动中call start_mysql.batif %errorlevel% neq 0 ( echo [错误] MySQL 启动失败 & pause & exit /b 1 )set "CP=bin;lib\mysql-connector-j-8.0.33.jar"java -cp "%CP%" com.genshin.rpg.Maincall stop_mysql.batpausestop_mysql.bat
Section titled “stop_mysql.bat”启动 mysqld 时记录 PID 到 mysql\mysqld.pid,关闭时按 PID taskkill。若实现复杂可简化为”程序退出后保留 MySQL 运行,下次启动更快”,并在 README 说明。优先实现 PID 方式。
README.txt 要点
Section titled “README.txt 要点”环境要求(Win10/11 64位 + JDK17+)、运行步骤(解压→双击 run.bat→首次初始化约10秒→登录窗)、管理员密码 klee is comming、常见问题(端口占用/JDK 验证)、目录说明、卸载方法。完整模板见《打包计划书.md》第 6 节。
工作步骤(按序)
Section titled “工作步骤(按序)”- 建
dist\genshinrpg\全部子目录。 - 复制并瘦身 MySQL(按清单删)。
- 复制
refactored\src\→GenshinRPG\src\;jar →lib\;sql →db\。 - 改 DBConnector.java(只改路径段)。
- 在
GenshinRPG\下编译:javac -encoding UTF-8 -d bin @sources.txt(先dir /s /b src\*.java > sources.txt),确认 0 error。 - 写 4 个脚本 + README + .gitignore。
- 本地验证(必做,这是验收关键):
a. 停掉本机已有 mysqld(任务管理器结束 mysqld.exe 或
net stop mysql),模拟干净环境。 b. 删GenshinRPG\mysql\data整个目录,模拟全新解压。 c. 双击run.bat:应看到端口探测 → 首次--initialize-insecure初始化 → 程序启动到登录窗。 d. 试注册一个新号、登录、进主菜单、打一关、注销,确认数据存档正常。 e. 不关 MySQL,再次双击 run.bat:应显示”端口已开放,跳过启动”,直接进登录窗。 - 打 zip:
GenshinRPG\→dist\GenshinRPG.zip。 - 写
dist\PACK_NOTE.md:瘦身明细(删了什么、留了什么、各步体积)、首次初始化验证记录、复用启动验证记录、最终 zip 体积。
-
GenshinRPG.zip在不含E:\SQL的环境解压双击 run.bat 能进登录窗。 - 首次自动初始化 MySQL,genshin_rpg 库自动建好(程序能注册/登录/存档)。
- DBConnector.java diff:除路径段外零改动。
- zip 体积 < 50MB(目标 ~30MB)。
-
PACK_NOTE.md含体积明细与两轮验证记录。
E:\AI\zcode\object\ke-she\dist\GenshinRPG.zip + dist\PACK_NOTE.md。贴出编译输出、首次初始化与复用启动的验证截图/日志摘要。
开始执行。先读《打包计划书.md》和全部相关源文件,再动手。