2014-01-15 22 views
1

我正在嘗試創建一個桌面應用程序(在java中創建),它將在內部運行jcshell(恩智浦提供的用於交互的工具用計算機的安全元件SD卡)併產生輸出。在jcshell中,我將運行腳本文件。所以這個桌面應用程序也應該在內部啓動jcshell並運行腳本文件。如何從定製Java桌面應用程序啓動恩智浦產品JCOPShell(jcshell.bat)

我執行了JCOP shell命令,它將通過JCOP(NXP)提供的JCOP shell工具(jcshell.bat)與安全元件SD卡進行通信。現在我需要創建一個Windows桌面應用程序,通過它我可以通過jcshell.bat運行JCOP shell命令。

Process processObj = Runtime.getRuntime().exec("cmd /C dir"); 

上述代碼將從命令提示符以及從我的自定義Java桌面應用程序返回與目錄詳細信息相同的輸出。 我正在尋找類似的東西,但無法從我的JavaDesktopApplication中運行jcshell.bat。

以上將是非常讚賞

我曾嘗試也的ProcessBuilder工作以下列方式,但不能得到預期的output.In下列ArrayList的任何幫助,第一個元素是路徑我批處理文件和第二個元素是腳本文件的位置。我的意圖是通過Windows應用程序運行腳本文件,這是jcshell.bat,我用JCOP給出的工具運行。以下是使用ProcessBuilder的代碼。

ArrayList commandList = new ArrayList<String>(); 
commandList.add("C:\\Program Files\\NXP Semiconductors\\JCShell\\jcshell.bat"); 
commandList.add("./scripts/javatest.jcsh");‌​‌​ 
ProcessBuilder pb = new ProcessBuilder(commandList); 
pb.redirectErrorStream(true); 
Process p = pb.start(); 
String s; 
BufferedReader stdout = new BufferedReader(new InputStreamReader(p.getInputStream())); 
while ((s = stdout.readLine()) != null && !isCancelled()) { 
    publish(s); 
    System.out.println("OUTPUT == " + s); 
} 
if (!isCancelled()) { 
    status = p.waitFor(); 
} 
p.getInputStream().close(); 
p.getOutputStream().close(); 
p.destroy(); 
+0

還要考慮'ProcessBuilder',圖文並茂[這裏](HTTP:/ /stackoverflow.com/search?tab=newest&q=user%3a230513%20ProcessBuilder)。 – trashgod

+0

@trashgod:你可以看看我使用過ProcessBuilder的代碼。我已將這些命令添加到arraylist。 Arraylist的第一個元素是通往jcshell的路徑。第二個元素是執行腳本文件的命令。現在,雖然只運行commandlist中的第一個元素被執行,但不是第二個(這正是我需要程序做的) – Stallion

+0

請編輯您的問題以包含一個[* Minimal,Complete,Valid Example *](http:// stackoverflow.com/help/mcve)顯示您當前的方法。也許有JCOP經驗的人可以爲您提供建議。 – trashgod

回答

相關問題