9.1.2 Windowsの場合
Windowsでの注意事項について説明します。
-
AWTコンポーネントでのJIS X0213:2004の第三水準,第四水準文字の非サポートについて
AWTコンポーネントはJIS X0213:2004の第三水準,第四水準文字をサポートしていません。AWTコンポーネントが出力する情報で該当する文字の部分は文字化けします。Windows環境で該当する文字を扱う場合には,Swingコンポーネントを使用してください。
-
JNIプログラム中で使用できないライブラリについて
JavaVM内で管理している情報が不正に更新されることがあるため,JNIプログラム中で次のライブラリは使用できません。
-
setjmp()
-
longjmp()
-
-
java.io.tmpdirプロパティについて
java.io.tmpdirプロパティには,書き込み権限があり,かつ存在するディレクトリを指定してください。java.io.tmpdirプロパティの初期値は,Windows APIのGetTempPath()関数で得られるディレクトリです。
また,Java RMIの動的クラスローディング機能やJava APIのjava.io.File.createTempFile()では,java.io.tmpdirプロパティで指定されたディレクトリに一時ファイルを作成します。これらの機能を正常に動作させるため,JavaVMプロセス起動中は一時ファイルの作成先を削除しないでください。
-
管理者特権が必要な独立プロセスの起動について
管理者特権のないユーザで起動したjavaアプリケーションから,java.lang.Runtime.exec(),またはjava.lang.ProcessBuilder.start()で,管理者特権のある独立プロセスを起動する場合は,次の手順で起動してください。
-
管理者特権として起動するコマンドにマニフェストを追加します。マニフェストの追加方法については,OSのドキュメントを参照してください。
-
Windowsのcmd.exeを介してプロセスを起動します。
例えば,sample.exeを起動する場合には次のようになります。
・Runtime.getRuntime().exec("cmd.exe", "/c", "sample.exe");
・new ProcessBuilder("cmd.exe", "/c", "sample.exe").start();
このjavaアプリケーションを起動すると,[ユーザー アカウント制御]ダイアログが表示されるので,[続行]をクリックしてアプリケーションを続行してください。
-
-
java.util.prefs.Preferences.systemNodeForPackageによるデータ共有について
管理者特権のないユーザが,java.util.prefs.Preferences.systemNodeForPackageを使用した場合,異なるユーザ間でのデータ共有機能は使用できません。
例えば,同一のキーを引数に指定した場合,異なるユーザ間では異なったデータが返ります。
-
デフォルトエンコーディングについて
アプリケーションサーバのデフォルトエンコーディングはwindows-31j(別名:MS932)です。
-
エンコーディング時に発生する文字化けについて
次に示す文字をJavaプログラムで扱う場合,エンコーディングにMS932,windows-31j,cswindows31jのどれかを指定してください。それ以外のエンコーディングを指定した場合,文字化けすることがあります。
(例)
このプログラムは,IBM拡張文字をeucjisでエンコーディングしているため,実行すると次のように文字化けします。
java encode_eucjis ???
文字化けを回避するためには,MS932,windows-31j,cswindows31jのどれかを指定してエンコーディングしてください。
-
JavaがサポートするUTF-8エンコーディングについて
JavaがサポートするUTF-8エンコーディングは,BOMなしのUTF-8です。Windowsのテキストエディタ(メモ帳)で「文字コード」に「UTF-8」を指定して保存したデータは,BOMありのUTF-8となるため,Javaでは扱えません。