private void generateDATFiles() throws Exception {
File shellScriptPath= new File((this.getClass().getResource("/Vorlagen/Simulation/test.sh").toURI()));
ProcessBuilder pb = new ProcessBuilder(shellScriptPath.getAbsolutePath());
Process p = pb.start();
}
所以我有一个要执行的shell脚本。问题是我需要文件路径,并且可以使用getResource
来获取它,但是我得到的错误是我的uri不是分层的,所以我发现我需要使用getResourceAsStream
来避免该错误,但是我的问题是如何使用getResourceAsStream
获取文件路径?
答案 0 :(得分:0)
不幸的是,这并非易事。如果将.sh脚本与程序的其他部分一起打包在单个.jar中,则它将无法正常工作。您只能作为资源流而不是URI来访问它(即使在开发模式下也可以获取实际的URI)。这是因为.sh和类文件以及所有内容实际上都在文件系统(.jar)的同一文件中。
与其说Java限制不如说是操作系统。如果.sh捆绑在jar / war /任何其他归档文件中,则无法从Java代码运行它。 (实际上,您也不能从命令提示符处执行此操作。)
为了解决该问题,您可以获取输入流并将内容写入一个临时文件中(可以使用java createTempFile功能),然后执行该临时文件。或者,您可以从jar(zip)中提取.sh文件并执行
答案 1 :(得分:0)
尝试用这种方式做。
class J{
public static void main (String a[]){
{
System.out.println(J.class.getResourceAsStream("/file.txt")
}
}