2011-11-14 17 views
24

私は、特定のXMLファイルを処理してプレーンテキストを抽出するEclipseプロジェクトから実行可能なJARを構築しました。ただし、このバージョンでは、コード内でファイルをハードコードする必要があります。runnable JARへのコマンドライン引数の受け渡し

この

java -jar wiki2txt enwiki-20111007-pages-articles.xml 

ような何かをしてjarファイルをXMLファイルに実行するようにして方法はありますか?

私はいくつか見てきましたが、すべての例はコマンドラインでJARをコンパイルすることと関係しており、引数を渡すことはありません。

答えて

29

どうしてですか?

あなたのMain-Classを変更して、引数を受け取り、引数に作用させてください。

public class wiki2txt { 

    public static void main(String[] args) { 

      String fileName = args[0]; 

      // Use FileInputStream, BufferedReader etc here. 

    } 
} 

コマンドラインでフルパスを指定します。

java -jar wiki2txt /home/bla/enwiki-....xml 
+0

ご清聴ありがとうございます。私がJavaプログラムの議論に入れなければならなかったのは、Eclipseのみの実行でした。それらのどれもスタンドアロン製品ではなく、私は同じ原則が成り立っていることを理解していませんでした。 – Jason

+0

なぜ "InputStream inputStream = MyClass.class.getResourceAsStream(args [0]);"うまくいかない? –

+0

@ArthurEirichそれは別の質問のように聞こえる。適切な値を出力する "args [0]"を出力すると、コマンドライン引数をjarファイルに正常に渡すことができました。 – Kal

4

あなたは、コマンドライン上でプログラム引数を渡すと、このようなあなたのJavaアプリでそれらを得ることができます。

public static void main(String[] args) { 
    String pathToXml = args[0]; 
.... 
} 

またあなたにコマンドラインを変更することで、システムのプロパティを渡す:

java -Dpath-to-xml=enwiki-20111007-pages-articles.xml -jar wiki2txt

とあなたのメインクラスへ:

public static void main(String[] args) { 
    String pathToXml = System.getProperty("path-to-xml"); 
.... 
} 
0

このようにアプリケーションを実行すると、java excecutableは自分のjarファイル内のMANIFESTを読み込み、定義したメインクラスを見つけます。このクラスには、mainという静的メソッドがあります。この方法では、コマンドライン引数を使用することができます。

26

コマンドラインでJavaプロパティ(環境変数)を設定し、コード内のどこでも簡単に使用できます。

コマンドラインは、この方法を行うことになります。

C:/> javaの-jar -Dmyvar = enwiki-20111007-ページ-articles.xml

とJavaのコードアクセスwiki2txtこの値は次のようになります。

String context = System.getProperty("myvar"); 

この質問はargument passing in Javaを参照してください。

+3

Javaプロパティは環境変数ではありません。彼らは同じ目的を果たすことができますが、異なる種類のものです。 – devdanke

関連する問題