我正在嘗試創建一個桌面應用程序(在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();
還要考慮'ProcessBuilder',圖文並茂[這裏](HTTP:/ /stackoverflow.com/search?tab=newest&q=user%3a230513%20ProcessBuilder)。 – trashgod
@trashgod:你可以看看我使用過ProcessBuilder的代碼。我已將這些命令添加到arraylist。 Arraylist的第一個元素是通往jcshell的路徑。第二個元素是執行腳本文件的命令。現在,雖然只運行commandlist中的第一個元素被執行,但不是第二個(這正是我需要程序做的) – Stallion
請編輯您的問題以包含一個[* Minimal,Complete,Valid Example *](http:// stackoverflow.com/help/mcve)顯示您當前的方法。也許有JCOP經驗的人可以爲您提供建議。 – trashgod