12

私はこのクラスを持っています:

public class Test {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

そして、Eclipse の「Export to runnable JAR」機能を使用して、実行可能な jar ファイル (test.jar) にしました。このプログラムを Eclipse で実行すると、"Hello World!" が出力されますが、コマンド ラインから jar ファイルを呼び出しても何も起こりません。

次のようにjarファイルを呼び出してみました:

test.jar
test.jar -jar

出力はまったくありません。

(stdout への出力に加えて) 副作用もある別のプログラムがあり、副作用が実行されている間 (jar ファイルが確実に実行されたことがわかります)、コマンドラインに出力が与えられません。stderr も使用してみましたが、違いはありません。これを機能させる方法を知っている人はいますか?

ありがとう!

4

3 に答える 3

31

を使用して JAR を実行する必要があります。

java -jar test.jar

(コマンドを任意の場所から機能させるには、JRE の bin フォルダーを PATH に追加する必要があります)

注:Eclipseを使用してJARを作成したことは知っていますが、実行可能なJARがどのように機能するかを知りたい場合があります

于 2009-06-04T09:44:14.880 に答える
9

前の回答は正しいので、「実行可能な jar」の概念を少しだけ明確にします。Windowsのexeファイルに相当する「実行可能jar」などはありません。「実行可能jar」では、「エントリ」ポイントのみを指定します(デフォルトで実行するメインクラス)

jar は基本的に単なるアーカイブです。実際に jar を起動するには Java が必要です ( java -jar your.jar )。

Windowsでjavaw.exeと関連付けられている可能性があるという事実は、.txtファイルがメモ帳で自動的に開かれるように、jarをダブルクリックするとOSによって起動されることを意味し、.txtを作成しません実行可能ファイル。

これもチェックしてください: 明らかになったJARファイル

于 2009-06-04T10:20:46.663 に答える
3

「test.jar」を使用して jar を呼び出すと、アプリの開始は、コマンド ラインのコンテキストでは実行されない、jar ファイルの登録済み Java ハンドラに渡されます。
デフォルトの jar ハンドラーは、コンソール ベースの System.{out,err} ファイル ハンドルを開きません。これは、起動された各 jar ファイルの cmd スタイル ウィンドウを意味するためです。これは理想的な状況ではありません。
java -jar test.jar を使用する前の回答では、現在の cmd ウィンドウのコンテキスト内で実行されるため、出力が表示されます。

于 2009-06-04T09:55:30.647 に答える