2011-09-14 63 views
2

我希望能夠從命令行運行我的Java程序VMArgumentsFromFile(詳述如下),並在命令提示符下輸出「Success」。命令行的輸入應該是這個樣子:在Windows上運行Java應用程序時從文件加載VM參數

java <vmarguments.txt> VMArgumentsFromFile 

凡vmarguments.txt的內容是:

-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參數發送,然後以編程方式設置其內容)。在實踐中,這個問題的答案將用於發送許多不同的應用程序相同的vm參數,這些參數將被合併到一個文本文件中。

回答

3

我今天已經找到了最好的解決辦法是創建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 

的反引號告訴shell執行包含在其內部的命令,並更換表達式(從反引號到反引號)包含該命令的輸出。

或者,您可以構建一個啓動器應用程序來讀取文件並構建適當的命令行。所以,你最終會運行類似:

launcher arguments.txt VMArgumentsFromFile 

哪裏launcher是您的桌面應用(這可能是一個shell /批處理腳本或其他Java應用程序)

+0

有類UNIX系統中已經解決。 Windows也需要一個(見標題)。 –

+0

@bcash:是的,所以你可能想要構建一個啓動器/包裝器應用程序,然後可以啓動*實際*應用程序 –

相關問題