是否可以将可执行文件打包以便可以从Java运行?

时间:2013-04-09 18:53:44

标签: java hadoop jar executable elastic-map-reduce

简单地说,我需要能够将已编译的可执行文件粘贴到Java jar文件中,然后才能从Java运行它(可能通过ProcessBuilder)。

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

1 个答案:

答案 0 :(得分: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();