web-dev-qa-db-ja.com

コマンドライン引数を実行可能なJARに渡す

特定のXMLファイルを処理し、プレーンテキストを抽出するEclipseプロジェクトから実行可能なJARを作成しました。ただし、このバージョンでは、ファイルをコードにハードコーディングする必要があります。

このようなことをする方法はありますか

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

jarをxmlファイルで実行していますか?

私はいくつか調べてみましたが、与えられたすべての例はコマンドラインでJARをコンパイルすることに関係しており、引数を渡すことを扱っていません。

32
Jason

何故なの ?

単に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
35
Kal

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

コマンドラインは次のように実行されます。

c:/> Java -jar -Dmyvar = enwiki-20111007-pages-articles.xml wiki2txt

そしてJavaコードは次のように値にアクセスします:

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

Javaで渡す引数 に関するこの質問を参照してください。

28
Kelly S. French

コマンドラインでプログラム引数を渡し、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");
....
}
5
laguille

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

0
eppesuig