2016-11-17 314 views
0

我想弄清楚如何从eclipse中的JAVA程序执行一个简单的bash脚本。我已经检查像Cannot run program "..../abc.exe": error=13, Permission deniedPermission denied when running shell script from java program一些问题,但我仍然有这样的错误:在eclipse中执行bash脚本

IOException: Cannot run program "prog" error=13, Permission denied.

我已经检查文件权限:

-rwxrwxr-x user user prog

我用这个片段来执行脚本:

File file = new File(this.getClass().getClassLoader().getResource("prog").getFile()); 
ProcessBuilder processBuilder = new ProcessBuilder(file.getAbsolutePath()); 
try { 
    Process process = processBuilder.start(); 
    process.waitFor(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (InterruptedException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

这个脚本在哪里?它看起来像你可能在一个jar里面 - jar里的对象不是文件,你不能用File来访问它们。 –

+0

它位于我的eclipse项目的资源文件夹内。该文件是一个bash脚本,它调用了我无法控制的一些jar文件。如果我通过终端调用它,它可以很好地工作... –

回答

0

从java调用bash脚本时,必须指定'/ bin/bash'作为可执行文件并将脚本路径作为参数传递。

+0

我尝试以下方式:'ProcessBuilder processBuilder = new ProcessBuilder(“/ bin/bash”,file.getAbsolutePath());'并且脚本得到执行。谢谢您的帮助。 –