2013-04-09 31 views
3

简而言之,我需要能够将编译好的可执行文件粘贴到Java jar文件中,然后才能从Java运行它(可能通过ProcessBuilder)。是否有可能激发一个可执行文件,以便它可以从Java运行?

为什么是我想使用ImageMagick可执行文件的Java包装器作为图像处理Elastic Map Reduce作业的组件。 EMR只希望获得一个jar文件,所以我认为没有任何空间可以在启动的数据节点上安装软件。

+1

使用ZIP流,将此可执行文件打包到您的jar文件中,然后在运行时将其解压缩到临时文件夹并运行。 – 2013-04-09 18:57:11

回答

3

进入jar的可执行文件是资源,您可以通过Stream访问它并将可执行文件展开到TEMP目录,然后使用ProcessBuilder执行它。

File target = new File(System.getProperty("java.io.tmpdir"), <filename>); 
InputStream is = 
    getClass().getClassLoader().getResourceAsStream(<path to rc>); 
OutputStream os = new FileOutPutStream(target); 
<copy is to os> 
Process p = new ProcessBuilder(target).start(); 
+1

哇。这非常有帮助,谢谢! – JnBrymn 2013-04-09 19:27:52

相关问题