可執行jar包中 自定義編譯器 編譯文件時報錯:錯誤: 編碼GBK的不可映射字符

自己寫的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"連在一起傳參,回報錯的!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章