簡體   English   中英

在Java中執行外部命令

[英]execute an external command in java

有沒有一種方法可以在Java中執行不因使用ProcessBuilder而引起的啟動開銷(緩慢)的命令?

詳細信息:我使用的是im4java,這是一個Java庫,內部使用ProcessBuilder執行imagemagick的程序。 太慢了 我創建了一個小型單元測試,該測試表明ProcessBuilder(不是im4java)是問題所在。 緩慢是使用ProcessBuilder的啟動開銷。 我在互聯網上發現帖子說processbuider有開銷,所以不僅僅是我這么說。

List<String> commands = new ArrayList<String>();
commands.add("C:\\PROGRA~2\\ImageMagick-6.6.4-Q16\\convert.exe");
commands.add("dog.jpg");
commands.add("output.jpg");
ProcessBuilder processBuilder = new ProcessBuilder(commands);
Process start = processBuilder.start();
start.waitFor();
Runtime.getRuntime().exec(...)  

可用於運行外部命令。 您可以將List轉換為命令數組或字符串以傳遞給exec()。

不建議這樣做,但是您可以編寫JNI庫來執行與ProcessBuilder相同的操作。 也許您的速度會更快,但我不會指望它,而且您會失去跨平台兼容性。

我們在這里說話有多慢? 我自己使用ProcessBuilder來運行Git命令(還沒有機會研究JGit),這似乎足夠快。 在Linux上,您可能會碰運氣,因為開銷實際上可能是Windows重量級進程的創建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM