2011-09-14 1 views
2

コマンドラインからJavaプログラムVMArgumentsFromFile(詳細は後述)を実行し、コマンドプロンプトで "Success"を出力したいと考えています。 vmarguments.txtの内容である場合Windows上でJavaアプリケーションを実行しているときにファイルからVM引数をロードする

java <vmarguments.txt> VMArgumentsFromFile 

-Dvmopttest=Success 

そしてVMArgumentsFromFile.javaの内容は次のとおりです。

public class VMArgumentsFromFile { 

    public static void main(String[] args) { 
     System.out.println(System.getProperty("vmopttest","Fail"); 
    } 
} 

どのコマンド・ライン・エントリは次のようになりますWindowsシステムでこのプログラムが "Success"を出力するための適切なコマンドライン入力ですか?

これに近い質問がいくつかありますが(herehere)、私が提示しているこの特定のケースには対処しません。 Javaプログラム内でこれを解決する答えを提供しないでください(ファイル名をvmパラメータとして送信し、その内容をプログラムで設定するなど)。実際には、この質問に対する答えは、1つのテキストファイルに統合される複数の異なるアプリケーションを同じvm引数で送信するために使用されます。

答えて

3

私が今日見つけた最適なソリューションをしている(シェル/バッチスクリプトまたは別のJavaアプリかもしれない)あなたのランチャーアプリです

launcher arguments.txt VMArgumentsFromFile 

次のようにCMDファイルを作成します。

@echo off 
set LIST= 
for /F %%k in (vmarguments.txt) DO call :concat %%k 
echo %LIST% 
java %LIST% VMArgumentsFromFile 
:concat 
set LIST=%LIST% %1 
goto :eof 

このアプローチでは、テキストファイル内のVM引数は引用符で、自分の行に囲まれていることが必要です。

これはで答えをオフに基づいています:How to concatenate strings in a Windows batch file?

2

あなたは正気のシェルとUNIXライクなシステム上にある場合、あなたのような何かをすることができる場合がありますバッククォートは、それらの内側に含まれるコマンドを実行し、交換するシェルを伝える

java `cat vmarguments.txt` VMArgumentsFromFile 

をそのコマンドの出力と(バックティックからバックティックまで)を含む。

また、ファイルを読み込んで適切なコマンドラインを構築するランチャーアプリをビルドすることもできます。だから、のようなものを実行してしまうでしょう:launcher

+0

は、すでにUNIXライクなシステムのためのソリューションを持っています。 Windows用も必要です(タイトルを参照)。 –

+0

@bcash:うん、だから、実際のアプリを起動できるランチャー/ラッパーアプリを作って –

関連する問題