6

Jarファイルをダブルクリックして実行したい。

以下は、そこに存在する唯一のJavaクラスファイルです。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Sysout{
public static void main(String[] args) throws IOException{
    System.out.println("Hello World!");
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String msg = br.readLine();
    System.out.println(msg);
    br.read();
}
}

また、マニフェストファイルにはメインクラスが定義されています。

このリンクを使用して、バッチファイルをダブルクリックしてJarファイルを正常に実行しました。これにより、コマンドプロンプトが開き、定義されたメインクラスが実行されます。

ただし、Jarファイルを直接ダブルクリックしても何も起こりません。また、このリンクを確認し、.jarをjavaw.exeに関連付け ました。このリンクも同じことを示しています。また、.jarをjava.exeに関連付けてみました

何が起こるかというと、コマンドプロンプトがほんの一瞬開いて消えます。

ユーザーがデータを入力することを期待している場合でも、ダブルクリック操作はユーザーが何かを入力するのを待ちません。

問題はどこだ?

4

3 に答える 3

12

関連付けを使用するjavawと、コマンド ウィンドウが作成されず、すべてのSystem.outおよびSystem.err呼び出しが飲み込まれます。

.jarファイルをバイナリに再度関連付けるjava必要があります。これにより、必要なコマンド ウィンドウが表示されます。

simple オプションを使用した場合、コマンド ラインからオプションOpen With...が省略されます。-jar

管理者コマンド ウィンドウを開き (UAC を有効にして Vista または Windows 7 を使用している場合に必要です)、次の操作を行います。

assoc .jar=jarfileterm
ftype jarfileterm="C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*

あなたの場合、C:\Program Files\Java\jre7\bin\java.exeパスをjreのインストール用のものに置き換える必要があります。

これに従ってダブルクリックすると、正しく実行されるはずです。

別の ftype を追加できます。

ftype jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

再度 javaw バイナリへのパスをシステム用のパスに置き換えます。

assoc .jar=jarfiletermと を交互に選択して、ウィンドウ付きとウィンドウなしを切り替えることができるはずですassoc .jar=jarfile

.jar を実行した後もコマンド ウィンドウを残しておきたい場合は、Java コマンドの呼び出しをcmd /s /kvizで囲みます。

ftype jarfileterm=cmd /s /k ""C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*"
assoc .jar=jarfileterm

これらのコマンドが機能した場合、jar ファイルをダブルクリックすると、コマンド ウィンドウがポップアップして表示されます。

Open With...または を使用Default Programsしても、jar ファイルを実行できるほど複雑なコマンド ラインを設定することはできません。これらすべての努力ftypeassocコマンドを試してもうまくいかない場合は、レジストリ エディタを削除する必要があります。

を起動regeditし、下の .jar というキーを検索します。HKEY_CLASSES_ROOTこれにより、その下に値で呼び出された単一の値が表示され(Default)ます。ftype コマンドの呼び出しが機能した場合は、jarfileterm. うまくいかなかった場合は、別のアプリケーションによって作成された可能性のある関連付けを見ています (Java アップデーターがこれらのエントリを置き換えるかどうかはわかりませんが、そうであれば、これが問題である可能性があります)。

次に、 でこのキーを探す必要がありますHKEY_CLASSES_ROOT。このエントリには、.jar ファイルを起動するための呼び出しコマンドを含む値を含むキーを含むキーが含まれている必要がありますShell(つまり、フォルダjarfiletermを展開すると、別のフォルダが表示されますShell) 。このコマンドは、最後に入力したエントリと一致する必要があります。一致しない場合は、「c:\program files\java\jre7\bin\java.exe」オプションのいずれかに一致させる必要があります (起動時にエラーが発生した場合にコマンド ウィンドウを永続化するかどうか)OpenCommand(Default)ftype jarfileterm=...cmd /s /k

于 2012-05-04T10:35:50.710 に答える
1

.jarファイルが他のデフォルトプログラムにバインドされている可能性があります。右クリックして「Java(TM)PlatformSEbinary」で開きます。これは、実行可能なjarファイルがある場合に機能するはずです。

于 2012-05-04T10:33:52.907 に答える