有什麼辦法可以製作一個Java程序(在Windows中),它只是作爲PE (.exe)的包裝器,將所有的stdin輸入傳遞給程序並寫出以標出PE寫出的所有內容。圍繞PE(.exe)的Java包裝
我需要這個,因爲程序的接口只允許Java類,但我希望它運行一些我已經放在一起的代碼。
在此先感謝。
編輯:可移植性是0%重要。這隻需要在Windows中工作,並將永遠不需要在其他地方工作。
有什麼辦法可以製作一個Java程序(在Windows中),它只是作爲PE (.exe)的包裝器,將所有的stdin輸入傳遞給程序並寫出以標出PE寫出的所有內容。圍繞PE(.exe)的Java包裝
我需要這個,因爲程序的接口只允許Java類,但我希望它運行一些我已經放在一起的代碼。
在此先感謝。
編輯:可移植性是0%重要。這隻需要在Windows中工作,並將永遠不需要在其他地方工作。
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();
是的,您可以使用java.lang.Runtime.ecec()和java.lang.Process來訪問正在執行的* .exe文件的所有3個流(in/out/err)。
其他人提到了標準的Java機制(ProcessBuilder及其ilk)。但是,可靠地重新路由stdout/stdin/errout需要care(additional)。如果您不需要在Java應用程序內處理此I/O,請考慮通過JNI或JNA(demo here)使用本機呼叫(例如C的system
函數)。
很酷。我會盡力回覆你(或勾選此:) – 2010-01-16 06:09:47