首页 > 解决方案 > Java - 尝试执行 shell 脚本时权限被拒绝

问题描述

我正在创建一个 Java 程序,它将执行一个 JAR 文件以在我的机器上本地部署一个数据库。为此,我需要从 shell 脚本执行 JAR 文件(这需要自动化,而不是手动部署)。

“java -jar some-jar-SNAPSHOT.jar”

问题是,每当我尝试访问任何类型的 shell 脚本时,我都会得到 error=13,permission denied。我使用 sudo chmod 777 让我的目录对所有用户以及 JAR 文件本身进行读取、写入和执行。即使我尝试更改目录,也会出现问题。

这是我用来执行命令的代码片段:

String[] jarCommand = {"java -jar some-jar-SNAPSHOT.jar"}; Process process = Runtime.getRuntime().exec(jarCommand); System.out.println("Jar File accessed");

编辑:当我尝试执行简单命令时会出现此权限问题,例如:

String[] cd = {jarDirectory.getAbsolutePath(), "cd"}; Runtime.getRuntime().exec(cd);

这是在通过 chmod 设置文件的权限之后。

我看过很多不同的、类似的问题,但没有一个解决方案能解决我的问题。任何帮助是极大的赞赏。

标签: javacommandprocessbuilderchmodcd

解决方案


我不知道为什么这会导致权限被拒绝,但这应该是

String[] jarCommand = {"java", "-jar", "some-jar-SNAPSHOT.jar"};

否则,exec 调用将查找名为“java -jar some-jar-SNAPSHOT.jar”的可执行文件,尽管我希望这会导致 ENOENT 而不是 EPERM。


推荐阅读