我是一名前端开发人员,正在为客户处理一个项目。我们的后端团队为我提供了几个必须运行的 java 脚本,这些脚本为应用程序提供数据。所有这些脚本都是从命令行运行的。
我们被要求做的是打开多个终端实例(或者多个选项卡也可以)并为每个终端窗口运行一个脚本(调用 java 应用程序)。
现在,要做到这一点需要手动打开所有窗口,使用“cd”命令到达正确的文件夹,然后运行 java 命令,所有这些都是手动的。我想自动化这个过程。
首先,我编写了一个 shell 脚本 (launch_language) 来调用正确文件夹中的 java 文件。 单独运行此命令效果很好,并按预期运行程序:
#!/bin/bash
java -jar mercury/language-packs/language-connector/target/language-connector-1.12.7.jar
到目前为止,一切都很好。
现在,我想编写另一个脚本,它将打开一个新的终端窗口,然后加载并运行这个工作脚本。好的,那么:
#!/bin/bash
open -a Terminal.app launch_language
运行此脚本将按预期打开一个新的终端窗口,并启动 launch_language 脚本。但是,当发生这种情况时,终端会给出以下错误:
Error: Unable to access jarfile mercury/language-packs/language-connector/target/language-connector-1.12.7.jar
对于为什么以这种方式调用 launch_language 脚本会导致此错误发生有什么想法吗?
最佳答案
您在脚本中使用相对路径 - 因此仅当您从特定目录运行它时它才有效。
可能的解决方案:
- 在
java -jar
命令之前添加cd/FULL_PATH_TO_DIR
- 提供 jar 的完整路径 (
/FULL_PATH_TO_DIR/mercury/language-packs/language-connector/target/language-connector-1.12.7.jar
)
关于java - (Mac) 运行 java 时,从另一个 shell 脚本调用 shell 脚本会出现访问错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57171503/