JavaプログラムをWindows互換モードで動作させる

2018年8月5日

あらゆるWindowsプログラムにおいてあるようだが、Windowsがバージョンアップすると互換性を捨て去ってしまうようで、古いWindows用プログラムが正常に動作しなくなることがある。このような場合には、互換モードで動作させなくてはいけない。

互換モードで動作させないと、原因不明で急にプログラムが落ちてしまうようである。

2018/8/5:互換モードを簡単に設定するためのユーティリティを作成した。javawProperty:現在のjavaw.exeのプロパティダイアログを表示を参照されたい

一般的な.exe実行プログラムの場合

一般的な.exe形式のWindows用プログラムを互換モードで動作させるには、検索すればやり方が見つかると思うので、ここでは取り上げない。基本的には、その.exeファイルに互換モードの設定をすることになる。

.jar形式のJavaプログラムの場合

問題はJavaによる.jar形式のプログラムの場合である。互換モードで動作させないと、「Java(TM)Platform SE binaryの動作が停止しました」というエラーが発生し、いきなり実行がストップしてしまうことがあるらしい。

しかし、.jarファイルに互換モードを設定することはできない。この場合はjavaw.exeの方に互換モードを設定する必要がある。

.jar形式のJavaプログラムをダブルクリックすると、まずはjavaw.exeが実行され、その上で.jarファイルが実行されるからである。

もちろんこうしておけば、そのWindows内のすべての.jarファイルの実行において互換モードが適用されることになるので、個別に.exeに互換モードを設定するよりも楽かもしれない。

javaw.exeの特定

ただし、複数のJavaがインストールされている場合は、.jar拡張子に関連づけられたJavaがどれであるかをまず確認する必要がある。Windowsのファイル拡張子関連付けを確認するを参照して欲しい。

表示された.exeが、.jarをダブルクリックした時に起動されるJavaプログラムということになる。

※当然だが、新たにバージョンアップしたJavaをインストールした場合には、再度新しい方に互換モードを設定しなければならない。

javaw.exeに互換モードを設定する

次に、そのファイルをエクスプローラで探し出す。

右クリックでプロパティを選択する。

「互換性」タブで、「互換モードでこのプログラムを実行する」にチェックし、あとは適当と思われるOSを選択する。正直なところ、どれが適当であるかは私には何とも言えない。ここはやってみるしか無いと思われる。