2016年5月3日火曜日

.jar ファイルがGUIからダブルクリックで実行できないときに試したい3つのこと

どうもよっさん似の大学院生です
(本家よっさんさんから苦情来たらどうしようとドグマさんが危惧してたような...?)


さて,一発目ですが,私が自大学の後輩に質問されたときにあまり日本語ではいい情報が得られなかったのでどんなことをして解決したのかまとめておこうと思います.

環境はうちの学部の今年の新入生モデルでOSはWin10です
ざっくりとしすぎて申し訳ないですが,Win10というだけで割と充分な情報かなと思います.

ことの発端はとある課題でJREをインストールして.jarファイルを実行する必要があるのですが,その時にファイルブラウザからダブルクリックで起動しようとエラーが.


jarファイルが実行できないエラーの画像
図1 出てきたエラー
(個人情報の部分は白抜き)
出てきたエラーはこのような形.
「Javaをインストールできません.次のスイッチにエラーがあります」
というメッセージがでます.

Yahoo知恵袋などで少し情報が出てきたのですが,基本的にアンインストールしろしか乗ってなかったので以下にやったことをまとめておきます.



.jar ファイルがGUIからダブルクリックで実行できない時に試したい3つのこと

1. JAVA JREが正しくインストールされているか確認する


Oracleのページに行き,Javaのバージョンを調べるページにいきましょう.
図2のようなページに行くと思うのでチェックを実行します.

図2 Javaのバージョン確認ページ

実行をすると図3のような結果がでます.
(長らくアップデートを忘れていてかなりバージョンに開きがでてますね...)

図3 確認結果

Javaが正しくインストールできていなければ何かしらの表記が出るはずです.
これによってJavaが動かせる環境にあるか調べることができるはずです.

2. コマンドラインから .jarファイルが起動できるか確かめてみる

GUIで起動できないのならCUIから起動して見ましょう.
windowsなのでコマンドプロンプトでいいと思います.
JREをインストールした時点でjavaコマンドが使えるようになっているようです.

コマンドプロンプトの諸所の説明は省きます.

javaコマンドを使って.jarファイルを実行するには,

java -jar [.jarファイル]

コマンドを打てば起動できます.
CUIならば起動オプションを自分で設定できるためいろいろな検証ができると思います.

今回はこれで起動ができたので,レジストリの設定がおかしいではないかと疑いをかけました.

3. jarfixというソフトを試してみる

 jarfixはデンマーク人のデベロッパーが作成したツールです.

jarfixの公式サイトの記述によると,

If you doubleclick on a jar file, and your Java application does not start, your .jar association has been hijacked. You can fix the problem with Jarfix.
The problem ...
The root cause for the problem above is, that a program has stolen the .jar association. If you have installed the Java Runtime Environment the first time, the file type called "jar" is assigned to javaw.exe correctly. "jar" is an abbreviation for "java archive" and javaw.exe is the correct program to execute a .jar. However, on Windows any program can steal a file type at any time even if it is already associated with a program. Many zip/unzip programs prefer to do this, because a jar is stored in the .zip format.  If you doubleclick on a .jar, your pack program opens the file, rather than javaw runs the program, because your pack program ignores the meta information which are also stored in a .jar. In the Oracle bug database there is the low-priority report 4912211 "add mechanism to restore hijacked .jar and .jnlp file extensions", but it has been closed as "Closed, Will Not Fix".
The workaround ...
Reinstall the Java Runtime Environment or fix the Windows Registry manually each time this problem occurs.
The solution ...
You can fix this problem very easy with the small but reliable jarfix.exe program. Just doubleclick on it to restore the .jar association with javaw.exe. 
 ということだそうです.
簡単にいうと, 諸所の都合で.jarファイル関連の設定がハイジャックされておかしくなることあるけど,俺のツールを使えば直してくれぜ!とのこと.
hijackedという表現がなんとも素敵ですね.

今回ダメ元で試したらGUIから.jarファイルを動かせるようになりました.

使い方はとっても簡単.起動して図4が出たら終わりです.

Jarfix Success Dialog
図4 jarfix利用したときの画面
(From his official jarfix webpage)


 この問題,マインクラフトの.jarファイルを起動する際にも良く出てくるみたいです.
マインクラフトで問題が起こっている方,試してみたらいかがでしょうか?