你把你的build.bat內容改成下面的試試看
@echo off
chcp 950 >nul 2>&1
setlocal EnableDelayedExpansion
cd /d "%~dp0"
set "ROOT=%~dp0"
set "SRC=%ROOT%src"
set "LIBDIR=%ROOT%lib"
set "JAR=%ROOT%Server_Game.jar"
set "BUILD=%ROOT%_build_tmp"
echo ============================================================
echo 381 cat server - rebuild Server_Game.jar
echo ============================================================
echo.
echo [檢查] 編譯需要 JDK(javac/jar),不是只有 JRE...
where javac >nul 2>&1
if errorlevel 1 (
echo.
echo [提醒] 找不到 javac。你能啟動伺服器代表有 Java,
echo 但「重新編譯」需要 JDK 8(含 javac/jar)。請安裝後再執行。
echo 建議安裝:Eclipse Temurin JDK 8。
echo.
pause
exit /b 1
)
echo [OK] javac 已就緒。
echo.
if not exist "%SRC%\com\lineage" (
echo [錯誤] 找不到 "%SRC%\com\lineage"。
echo 請把本 build.bat 放在「伺服器端」資料夾(與 src、lib、Server_Game.jar 同層)。
pause
exit /b 1
)
if not exist "%LIBDIR%" ( echo [錯誤] 找不到 lib(編譯依賴)。 & pause & exit /b 1 )
if not exist "%JAR%" ( echo [錯誤] 找不到 Server_Game.jar。 & pause & exit /b 1 )
echo [1/4] 準備暫存...
if exist "%BUILD%" rmdir /s /q "%BUILD%"
mkdir "%BUILD%"
echo [2/4] 掃描所有原始碼(含你自己新增的 .java)...
dir /s /b "%SRC%\*.java" > "%BUILD%\sources.txt"
for /f %%c in ('type "%BUILD%\sources.txt" ^| find /c ".java"') do set "SRCCNT=%%c"
echo 共 !SRCCNT! 個 .java。
echo [3/4] 編譯中(用你 lib 的依賴,約 1~3 分鐘)...
javac -source 1.8 -target 1.8 -encoding UTF-8 -nowarn -cp "%LIBDIR%\*" -d "%BUILD%" @"%BUILD%\sources.txt"
if errorlevel 1 ( echo. & echo [錯誤] 編譯失敗,請看上方錯誤(jar 未變動)。 & rmdir /s /q "%BUILD%" & pause & exit /b 1 )
echo [OK] 編譯完成。
echo [4/4] 備份舊 jar + 更新(只換 class,保留 manifest/J_Main.form/資源)...
for /f %%I in ('powershell -NoProfile -Command "Get-Date -Format yyMMddHHmmss"') do set "TS=%%I"
copy /Y "%JAR%" "%JAR%.bak_!TS!" >nul
if errorlevel 1 ( echo [錯誤] 備份 jar 失敗。 & rmdir /s /q "%BUILD%" & pause & exit /b 1 )
jar uf "%JAR%" -C "%BUILD%" .
if errorlevel 1 ( echo [錯誤] 更新 jar 失敗,可從 Server_Game.jar.bak_!TS! 還原。 & rmdir /s /q "%BUILD%" & pause & exit /b 1 )
rmdir /s /q "%BUILD%"
echo.
echo ================= 完成 =================
echo 新 Server_Game.jar 已產生。舊檔備份為 Server_Game.jar.bak_時間戳。
echo 重啟伺服器即生效。
echo ========================================
echo.
pause