0

プロジェクトで、Apache Karaf の自動ビルド システムをセットアップしようとしています (新規インストールで作業環境をセットアップするために、Karaf で実行する必要があるコマンドがいくつかあります)。Karaf には、いくつかのパラメーターを設定し、実際の Java プログラムを呼び出すバッチ/スクリプト ファイルが含まれています。本質的に、私は次のようなことができるようにしたいと思います:

java MyProgramClass.class < commandTextFile.txt

しかし、これを試してみると、何もしません。私の目標は、単に karaf.bat ファイルをコピーし、(以下のように) 少し変更して、実行できる「karaf-install.bat」を作成することです。私が変更した karaf.bat の部分を以下に示します。< "C:\commandFile.txt最後に追加しただけです (以下は、読みやすくするためにすべて 1 行にまとめています)。

"%JAVA%" %JAVA_OPTS% %OPTS% -classpath "%CLASSPATH%" 
  -Djava.endorsed.dirs="%JAVA_HOME%\jre\lib\endorsed;%JAVA_HOME%\lib\endorsed;%KARAF_HOME%\lib\endorsed" 
  -Djava.ext.dirs="%JAVA_HOME%\jre\lib\ext;%JAVA_HOME%\lib\ext;%KARAF_HOME%\lib\ext"
  -Dkaraf.instances="%KARAF_HOME%\instances" -Dkaraf.home="%KARAF_HOME%" 
  -Dkaraf.base="%KARAF_BASE%" -Dkaraf.data="%KARAF_DATA%" 
  -Djava.util.logging.config.file="%KARAF_BASE%\etc\java.util.logging.properties" 
  %KARAF_OPTS% %MAIN% %ARGS% < "C:\commandFile.txt"

しかし、Karaf は何も表示しません。通常どおり実行したかのように実行されます。私のコマンドは実行されません。コンソールからJavaプログラムにリダイレクトする方法はありますか? 私はそれを間違っていますか?

価値のあることとして、これは最終的に Windows と OS X の両方で行われる予定ですが、現時点では Windows に焦点を当てています。

更新:これはOS Xでうまくいくようです(カラフは(「コマンドが見つかりません:」と言って)苦労しますが、すべてを初期化する前にコマンドを取得しているためだと思います)が、Windowsはまだうまくいきませんコマンドも取得します。もっと突っ込みます。

4

2 に答える 2

1

INTO をパイプすると、 から読み取ることができますSystem.in

InputStream ではなく、Reader と考えてください。

于 2012-07-06T21:03:54.323 に答える
0

この問題は、OS Xで動作するので、Karafの奇妙なものとして書き留めます。Karafにclient付属のプログラムを使用して(OS Xの.shファイルで)次のようにすることで回避できました。

"$KARAF/bin/client" "karaf_command_here"

または(Windowsの場合は.batファイル)

call "%KARAF%\bin\client.bat" "karaf_command_here"

そして、Karafにパイプするコマンドのリストを用意する代わりに、コマンドのリストを、コマンドclientごとにKarafを呼び出すシェル/バッチスクリプトファイルにしました。私が好きだったほどきれいではありませんが、それは仕事を成し遂げました。

client( withを使用する前にKarafを起動する必要があることに注意してくださいstart(そして)で閉じますstop)。

于 2012-08-30T22:02:19.213 に答える