自己寫的jar,在idea或者其他ide上面運行正常,打成可執行jar包在windows下運行時報錯。
錯誤: 編碼GBK的不可映射字符
問題原因是編譯時沒有選擇正確的編譯參數,
javac有幾個參數 -encoding表示了編譯的編碼所以在編譯器執行時應當指明成對應的編碼。
解決辦法:
如果是手動編譯的 就在javac後面加上參數 -encoding UTF-8
如果是使用自定義編譯器的就在方法上增加參數
public static void compile(String path, String outPath) {
try {
JavaCompiler javac;
javac = ToolProvider.getSystemJavaCompiler();
int compilationResult = -1;
compilationResult = javac.run(null, PanelLog.out, PanelLog.out, "-g", "-encoding", "utf-8", "-verbose", path);
if(compilationResult != 0){
throw new RuntimeException("編譯失敗!");
}
PanelLog.log("編譯成功!");
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
注意不要把"-encoding", "utf-8"連在一起傳參,回報錯的!