コマンドラインで.jarファイルを実行すると問題なく動作しますが、ダブルクリックしてPCで.jarファイルを実行できません。興味深いのは、同じ.jarファイルが私のラップトップでダブルクリックで正常に実行されることです。
PATH
変数に%Java_HOME\bin
とJDK_HOME\bin
を含めました。Java_HOME
をC:\Program Files\Java\jre1.8.0_121
に設定しています。JDK_HOME
をC:\Program Files\Java\jdk1.8.0_121
に設定しています。
しばらくの間、Java(TM)Platform SEバイナリがOpen with
リストから消え、HKEY_CLASSES_ROOT\jar_auto_file\Shell\open\command
のregedit.exe
キーを適切なバージョンに変更するまで追加できませんでした:
C:\ Program Files\Java\jre1.8.0 _121\ bin\javaw.exe ""%1 "。
PCにJava -version
が入力されたWindows CMDのスナップショットを次に示します。
次の方法を試しましたが成功しませんでした:
C:\Program Files\Java\jre1.8.0_121\bin\javaw.exe
の関連付けassoc .jar=jarfile
とftype jarfile="C:\Program Files\Java\jre1.8.0_121\bin\javaw.exe" -jar "%1" %*
を使用し、
追加情報:
Runtime.getRuntime().exec(String[])
を使用してシステムコンソールを開きます(まだ開いていない場合)。
次のリンクのソリューションでこの問題を修正しようとしました(成功していません):
メモ:
Java -jar jarfile.jar
を実行して.jarファイルを開きたくありません。
今のところ、jarファイルを実行するショートカットの場所としてC:\Windows\System32\cmd.exe /k "Java -jar C:\path\to\jarfile\Program.jar"
を使用していますが、これによりコンソールが開き、Swingアプリケーションも実行できるため、このソリューションに満足できません。
stackoverflow について同じ質問をしましたが、この種の質問にはスーパーユーザーの方が適していることが指摘されました。
今日あなたがしたのと同じ問題を抱えている誰かに出会いました。そして、どういうわけか、なんとかそれを修正することができましたが、何が修正されたのかは完全にはわかりません。私が提供したのは、私が取ったおおよその一連のステップだけです。
Regeditを使用して、HKEY_CURRENT_USERおよびHKEY_LOCAL_MACHINEレジストリエントリが一致していないことを発見しました。 HKLMには典型的な.jar
-> jarfile
セットアップ、jarfile
は正しいパスを指します。 HKCUは.jar
-> jar_auto_file
古い無効なパスを指す関連付け。
このパスを編集しても修正されませんでした。また、jarfile
をポイントしてみましたが、どちらも役に立ちませんでした。 assoc
とftype
を少し試してみて、これでWindowsが起動するかどうかを確認しました。私はハイジャック防止機能が何らかの理由でWindowsが更新されたパスをリッスンできないと考えました。悲しいことに、それは多くをしませんでした。
したがって、最終的にはjar_auto_file
エントリ。これは私に部分的な幸福を与えました:WindowsはOpen With
メニューはパスが機能するものでした。 (過去に正しいパス/ファイルを選択すると、正しく動かなくなることはありません。)悲しいことに、ダブルクリックはまだ壊れていました。ただし、[このプログラムでこの種類のファイルを常に開く]チェックボックスがオンになっていることを確認し、ファイルを開くと、関連付けが十分に修正され、ダブルクリックが実際に再び機能するようになりました。
私にも問題がありました。解決策はさらに簡単です。欠落している-jar
引数を追加します。
HKEY_CLASSES_ROOT\jar_auto_file\Shell\open\commandに移動し、デフォルト値を次のように設定します。
"C:\Program Files\Java\[...]\Java.exe" "-jar" "%1"
欠けていたのは、"-jar"
オプションのみでした。
楽しい!
上記のすべての手順を実行して問題を解決しましたが、何も機能しませんでした。 JDKとJREの両方をインストールしました。
私の場合、1つのjarファイルがダブルクリックで開かれ、他のjarファイルは開かれていませんでした。これらのファイルを調べたところ、Java SE 6を使用して作成されたファイルが開かれていたことが原因である可能性が高く、Java SEを使用して開かれていないファイルが作成されました。 7.ただし、問題のあるjarファイルはコマンドプロンプト(Java -jar myfile.jar)を介して実行されていました。
右クリック->プロパティ-> JDK\binディレクトリとJRE\binディレクトリの両方でjavaw.exeに変更してみました。
レジストリエディタでjavaw.exeパスを(JDK\binからJRE\binに)変更することで、ようやく問題を解決できました。
HKEY_CLASSES_ROOT\jarfile\Shell\open\commandに移動します。値は、
"C:\Program Files\Java\jdk-11.0.1\bin\javaw.exe" -jar "%1" %*
私はそれを
"C:\Program Files\Java\jre1.8.0_191\bin\javaw.exe" -jar "%1" %*
そしてそれは働いた。これで、jarファイルをダブルクリックして開くことができます。
PCにいくつかのJDKがインストールされている場合があります。一部の古いJDKインストーラーは、いくつかのJavaファイル(Java.exe
、javaw.exe
など)をC:\Windows\System32
フォルダーにコピーします。
同様の問題があり、インターネットで解決策を検索しましたが、.jar
ファイルをダブルクリックしても提案が開かれませんでした。
私の場合、理由は、コンピュータに複数のJDKおよびJREバージョンがインストールされているためです。私はソフトウェア開発者で、クライアントごとにいくつかの異なるバージョンを使用しているため、PC(Windows 10 Pro)で複数のJDKを使用する必要があります。したがって、システム変数(つまり、Java_HOME
、JRE_HOME
またはPATH
)を変更したくないので、代わりにコマンドプロンプトを使用してJava in別のバージョンを使用したいときはいつでもユーザープロセス。
JDKをインストールすると、.jar
ファイルの関連付けがPCにインストールした最新バージョンに関連付けられます。 .jarアイコンを右クリックしてプロパティを選択すると、ファイルが「Java(TM)Platform SE Binary」で開くことが示されます。レジストリキーHKEY_CLASSES_ROOT\jarfile\Shell\open\command
を見ると、最新のJDKバージョンを指しています。
別のバージョンからアプリビルドを実行するたびにレジストリキーを変更するのは(時には煩わしい)良いアイデアではありません。
したがって、私の状況では、.jar
ファイルをダブルクリックして実行するだけでは不可能です。しかし、代わりに自分で解決策を見つけました。
シナリオ:
PCには複数のJDK(1.7、1.8、9.0、10.0、11.0、12.0)がインストールされているため、最新のインストールは12.0でした。
問題
JDK 1.8を使用して開発されたが実行できなかった実行可能ファイル.jar
をダブルクリックしたい
これは私の解決策です:
.jar
ファイルのショートカットを作成します。ターゲットのテキストを変更します(たとえば、"D:\Dev\JavaApp1.8.jar"
)。
"C:\Program Files\Java\jdk1.8.0\bin\javaw.exe
" -jar
"D:\Dev\JavaApp1.8.jar
"
次に、[OK]をクリックします。ショートカットをダブルクリックします。
アプリが開くはずです。
私はWindows 7を使用して同じ問題を抱えていましたが、すべての解決策を試しましたが、cmd
コマンドを除いて何も機能しませんでした。しばらくすると、すべてを削除する必要があることがわかりましたJava =コンピューターからJDKとSEを実行し、それらを含むフォルダーを削除してJDK 8をインストールします。
これでうまくいきました-JDK 11とJDK 13を試しましたが、JDK 8だけが動作しました。