如何在Java中将脚本作为文件运行?

时间:2016-07-29 13:55:54

标签: java python maven

我有一个Python脚本,它是我项目中的资源。脚本是一个XML文件,脚本需要该文件才能正常运行。我在两个文件中作为InputStream读取,然后为两者创建临时文件:

InputStream is = (this.getClass().getClassLoader().getResourceAsStream("InterWebApp.py"));
File script = File.createTempFile("script", ".py");
Files.copy(is, script.toPath(), StandardCopyOption.REPLACE_EXISTING);
InputStream is1 = (this.getClass().getClassLoader().getResourceAsStream("setup.xml"));
File xml  = File.createTempFile("config", ".xml");
Files.copy(is1, xml.toPath(), StandardCopyOption.REPLACE_EXISTING);

但是,我不确定如何将脚本作为一个过程启动:

Process p = Runtime.getRuntime().exec("." + script.getAbsolutePath());
p.waitFor();

上面的代码抛出了IOException。如何运行script.py并确保其可以访问config.xml?现在,Python脚本只使用绝对路径解析XML文件,但此路径与临时文件的路径不同。

1 个答案:

答案 0 :(得分:1)

基本上,你问自己有问题,因为你要求它为绝对路径,但后面加上“。”,它通常是相对路径修饰符。首先尝试$(function(){ $(".ddSample").children().each(function(i,v){ $(".ddSample").children().each(function(j,w){ if(i!=j){ if($(v).val()==$(w).val()){ $(v).parent().next().addClass("cl") } } }); }); }); 。此外,根据您的操作系统和/或配置,.exec(script.getAbsolutePath())文件可能会或可能不会被识别为可执行文件(例如,在Unix系统上,只有具有可执行标志的文件才会被识别为可执行文件)。您可能实际上想要找到Python可执行文件的位置并将脚本作为参数传递。