java - 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 设置文件的权限之后。
我看过很多不同的、类似的问题,但没有一个解决方案能解决我的问题。任何帮助是极大的赞赏。
解决方案
我不知道为什么这会导致权限被拒绝,但这应该是
String[] jarCommand = {"java", "-jar", "some-jar-SNAPSHOT.jar"};
否则,exec 调用将查找名为“java -jar some-jar-SNAPSHOT.jar”的可执行文件,尽管我希望这会导致 ENOENT 而不是 EPERM。
推荐阅读
- r - 当我在ggplot2中使用汉字时从rmarkdown生成的奇怪符号
- slack - How to predefine a message and send it in Slack chat?
- reactjs - 如何颠倒将项目添加到 final-form/react-final-form-arrays 中的字段的顺序,所以最近的是第一个
- android - Flutter Android build无法确定任务':app:compileDebugJavaWithJavac'的依赖关系Google Play服务错误
- rest - 2captcha 标志 ERROR_WRONG_GOOGLEKEY 但我提供了一个。这实际上是 ERROR_GOOGLEKEY 吗?
- python - Django - 在数据库中为数据类型几何(MultiPolygon)设置什么模型?
- python - 具有默认值的 Django 模型过滤器
- azure - Azure CDN 清除命令问题
- python - 如何将 pyqtgraph 图定位在窗口中的像素位置?
- sql - 正则表达式搜索 SQL 查询字段