--- name: java8-utf8-compile description: >- Compile or rebuild this Java 8 MES client with UTF-8 encoding and JDK 8 only. Use whenever compiling Java, running javac, fixing class file version errors (55.0 vs 52.0), or building mesclient-qmOP180A / similar Java 8 projects. --- # Java 8 + UTF-8 编译 ## When to use - 任何 `javac` / Rebuild / 编译失败 - 报错:`类文件具有错误的版本 55.0, 应为 52.0` ## Rules 1. Always pass `-encoding UTF-8` 2. Always target Java 8: `-source 1.8 -target 1.8` (class major **52**) 3. Never leave Java 11+ class files (major **55**) in `bin/` ## Compiler Prefer: ```text D:\java\jdk-8u202\bin\javac.exe ``` Fallback: `D:\java\jdk-8\bin\javac.exe` ## Example ```powershell $javac8 = "D:\java\jdk-8u202\bin\javac.exe" $src = "src" $out = "bin" $lib = "lib" $cp = ((Get-ChildItem "$lib\*.jar").FullName -join ";") + ";$out" & $javac8 -encoding UTF-8 -source 1.8 -target 1.8 -cp $cp -d $out @(Get-ChildItem "$src\com\mes\plc\*.java").FullName ``` ## Recovery Delete bad classes under `bin/com/mes/...` then recompile with JDK 8 as above.