1

我有一个命令行应用程序,它使用 Spring Boot 和 picocli。可以传递参数,它是一个路径,例如myApp.jar /path/to/file,它将对该文件执行某些操作。我想在系统范围内使用这个应用程序,所以我将可执行文件.jar放入/usr/bin/并将其重命名为myApp.

现在,当我将它与绝对路径一起使用时:myApp /home/user/file它工作正常,但我想传递相对路径,例如,当我在时,/home/user/我希望它是myApp ./file. 问题是它尝试使用相对路径/usr/bin/file而不是/home/user/file.

我目前使用的解决方法是这样的:myApp $(pwd)/file.

你知道如何解决这个问题吗?

4

1 回答 1

1

好的,所以我已经设法通过使用Spring Boot 的自定义启动脚本解决了这个问题

我复制了原始来源并删除了负责更改工作目录的行:

run() {
  pushd "$(dirname "$jarfile")" > /dev/null # <-- removed
  "$javaexe" "${arguments[@]}"
  result=$?
  popd > /dev/null # <-- removed
  return "$result"
}

我对这个解决方案不是很满意,但总比没有好。

于 2020-08-05T08:32:24.043 回答