私が既存のJavaプロジェクトと格闘している現在、私の目標は、プロジェクトに引数を渡すためのコマンドラインインターフェイスを作成し、いわば「実行」することです。
私は次のように、Apache commonscliライブラリを使用しています。
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
public class CommandLineParameters {
public static void main(String[] args) {
CommandLineParser parser = new DefaultParser();
Options options = new Options();
options.addOption("a", "abc", true, "First Parameter");
options.addOption("x", "xyz", true, "Second Parameter");
options.addOption("h", "help", false, "Shows this Help");
try {
CommandLine commandLine = parser.parse(options, args);
System.out.println(commandLine.getOptionValue("a"));
System.out.println(commandLine.getOptionValue("x"));
if (commandLine.hasOption("h")) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CommandLineParameters", options);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
Eclipseでは、にArguments
渡されたRun Configurations...
ものを変更することでこれを実行できますが、実際にやりたいのは、などの「通常の」ターミナルプログラムと同様の方法で、ターミナルシェルからこのプログラムを実行できるようにすることですgrep
。またはipconfig
。
これはJavaを使用してどのように達成できますか?
注:コマンドラインからこのプログラムをコンパイル/ビルドしようとしているのではなく、コマンドラインでプログラムへのインターフェイスを作成しようとしています。
提供された回答は、java -jar
コマンドを使用して実行できるjarを作成する方法を説明しています。次の記事では、このような「実行可能」jarを取得して、によって実行可能な「プログラム」ファイルに変換する方法について説明しますsh
(したがって、で呼び出すことも、で呼び出さ./program
ないこともできますjava -jar program.jar
):https://coderwall.com/p/ssuaxa/how- to-make-a-jar-file-linux-executable
アイデアは、zip
アーカイブ(そしてajar
は基本的にzip
アーカイブのフレーバーです)が任意のプロローグを持つかもしれないということです。プロローグは、ファイルの先頭からzip
ファイルの署名までのすべてです(4文字、最初の2文字は「PK」です)。Javaがjar
アーカイブを読み取るとき、そのプロローグ(署名の前のすべて)をスキップします。
したがって、の観点からはjava
、そのようなjarは有効なjarになります。ただし、そのプロローグがシェルスクリプトの場合、そのようなjarは、シェルインタープリターを使用して実行できるファイルにもなります。
つまり、通常のjarコンテンツの前にjava -jar
、同じjarアーカイブを引数として呼び出すだけのシェルスクリプトを追加できます。そして、プロローグjava
をjar
無視してそれを喜んで実行します。
記事のプロローグは次のようになります。
#!/bin/sh
MYSELF=`which "$0" 2>/dev/null`
[ $? -gt 0 -a -f "$0" ] && MYSELF="./$0"
java=java
if test -n "$JAVA_HOME"; then
java="$JAVA_HOME/bin/java"
fi
exec "$java" $java_args -jar $MYSELF "$@"
exit 1
java
必要なパラメータを探して開始します。これは単なる例であり、java
コマンドを見つけるために使用されるアルゴリズムを調整して、ニーズに合わせることができます。
結果のファイルは、このランチャーシェルスクリプトと、を使用して実行する必要のあるjarファイル(メインクラスとマニフェストを含む)を連結したもので構成されますjava -jar
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加