2010-01-16 88 views
3

有什麼辦法可以製作一個Java程序(在Windows中),它只是作爲PE (.exe)的包裝器,將所有的stdin輸入傳遞給程序並寫出以標出PE寫出的所有內容。圍繞PE(.exe)的Java包裝

我需要這個,因爲程序的接口只允許Java類,但我希望它運行一些我已經放在一起的代碼。

在此先感謝。

編輯:可移植性是0%重要。這隻需要在Windows中工作,並將永遠不需要在其他地方工作。

回答

5

看看ProcessBuilder

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2"); 
Map<String, String> env = pb.environment(); 
env.put("VAR1", "myValue"); 
env.remove("OTHERVAR"); 
env.put("VAR2", env.get("VAR1") + "suffix"); 
pb.directory("myDir"); 
Process p = pb.start(); 

and another example of it

+0

很酷。我會盡力回覆你(或勾選此:) – 2010-01-16 06:09:47

2

是的,您可以使用java.lang.Runtime.ecec()和java.lang.Process來訪問正在執行的* .exe文件的所有3個流(in/out/err)。

1

其他人提到了標準的Java機制(ProcessBuilder及其ilk)。但是,可靠地重新路由stdout/stdin/errout需要careadditional)。如果您不需要在Java應用程序內處理此I/O,請考慮通過JNIJNAdemo here)使用本機呼叫(例如C的system函數)。