Java18以降の対応
Javaコンパイラのバージョンを調べます.
> javac -version javac xx.x.xx
|
バージョンが18以降であれば,以下の原因が考えられます.
【原因】
Java18以降は,デフォルト文字コードが「UTF-8」に変更されました.
javac コンパイル時に,オプションを指定しない場合,ソースコードを「UTF-8」として扱います.
(Java17以前のデフォルト文字コードは,OS依存で,Windowsは「SJIS」です.)
【エラー状況】
「SJIS」の入ったソースコードの場合,普通にコンパイルすると,以下の例ようなエラーになります.
> javac Xxxx.java Xxxx.java:3: エラー: この文字(0x93)は、エンコーディングUTF-8にマップできません System.out.println("???{??"); |
(Xxxx.javaはソースコードのファイル名です.)
【対応・その1】
Java18以降である必要が無ければ,Java17以下にバージョンダウンする.
JDK等のインストール(PDF)(コンピュータプログラミングI / IIのページ)
【対応・その2】
プログラミングでは,サクラエディタ等で,ソースコードを「SJIS」で保存します.
そのため,Java18以降でコンパイルするためには,オプション指定が必要です.
javac -encoding SJIS Xxxx.java |
このオプション指定を書かなくてもコンパイルできるようにするため,
次のバッチファイル(javac.bat)をダウンロードして,ソースコードを保存しているフォルダに置いてください.
使い方は,同じです.
javac Xxxx.java |
「SJIS」のソースコードがコンパイルできれば,完了です.
(参考)バッチファイルの中身の説明
javac.exe -encoding SJIS %1 %2 %3 %4 %5 %6 %7 %8 %9 |
このバッチファイルでは,本来のjavac.exeを呼び出す前にオプション指定を追加しています.
20220915, 20230914, 20240911 (by Takashi Kohama)