我已经在互联网上搜索了一段时间的解决方案,但是没有一个能清楚地说明如何执行sh文件。
我有一个外壳脚本install.sh
,该脚本已保存在resources
目录中。我想从ProcessBuilder运行它。无论我尝试什么,我都会不断收到No such file or directory
错误。这是我的代码:
String masterURL = config.getMasterUrl();
String adminToken = config.getAdminToken();
ProcessBuilder installScriptBuilder = new ProcessBuilder();
installScriptBuilder.command("install.sh", dir, namespace);
installScriptBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
Map<String,String> installEnv = installScriptBuilder.environment();
installEnv.put("URL", masterURL);
installEnv.put("TOKEN", adminToken);
try {
Process p = installScriptBuilder.start();
} catch (IOException e) {
e.printStackTrace();
}
我已经读过有关在其他答案中创建临时文件的信息,但是没有一个文件清楚地说明如何使用该方法解决此问题。我已经使用Spring Initializr创建了我的项目。
最佳答案
您可以使用“ classpath:install.sh”选择资源文件。
在这种情况下,我们无法做到这一点。我们需要路径本身:
final ClassLoader classLoader = getClass().getClassLoader();
final File file = new File(classLoader.getResource("install.sh").getFile());
final ProcessBuilder installScriptBuilder = new ProcessBuilder();
installScriptBuilder.command(file.getPath());