我有一个 Python 脚本,它是我项目中的资源。与脚本一起的是一个 XML 文件,脚本需要使用该文件才能正确运行。我将这两个文件作为输入流读取,然后为这两个文件创建临时文件:
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 文件,但该路径对于临时文件来说并不相同。
最佳答案
基本上,您是在自找麻烦,因为您要求它提供绝对路径,但随后在其前面加上“.”前缀,这通常是一个相对路径修饰符。首先尝试 .exec(script.getAbsolutePath())
。此外,根据您的操作系统和/或配置,.py
文件可能会或可能不会被识别为可执行文件(例如,在 Unix 系统上,只有带有可执行标志的文件才会被识别为可执行文件)。您实际上可能想要查找 Python 可执行文件的位置并将脚本作为参数传递。
关于java - 如何在 Java 中将脚本作为文件运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38660690/