java - (Mac) 运行 java 时,从另一个 shell 脚本调用 shell 脚本会出现访问错误

标签 java bash shell terminal

我是一名前端开发人员,正在为客户处理一个项目。我们的后端团队为我提供了几个必须运行的 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 脚本会导致此错误发生有什么想法吗?

最佳答案

您在脚本中使用相对路径 - 因此仅当您从特定目录运行它时它才有效。

可能的解决方案:

  1. java -jar命令之前添加cd/FULL_PATH_TO_DIR
  2. 提供 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/

相关文章:

bash - 在 shell 中实现通配符扩展

python - 在没有 shell=True 的情况下使用 python 运行外部程序?

shell - ${1 : +"$@"} in/bin/sh

java - 如何设置 spring-boot 以允许从外部 IP 地址访问网络服务器

java - 如何通过 Eclipse 在 java 中导入现有的 perl 项目?

java - Java 桌面应用程序与 SQLite 的捆绑安装(或任何数据库,例如)

ruby - Jekyll - 找不到命令

haskell - 如何将 GHC 安装到 Cygwin 或将 Cygwin 指向 GHC?

linux - 将多个文件从目录树复制到新的不同树; bash脚本

java - 客户端服务器程序的多线程