我遇到以下情况。
我有一个打包在 jar 文件中的 java 程序。如果我调用 java -jar myProgramm.jar 一切正常。该文件正在从 build.xml (ant 文件)读取一些值。该文件与 myProgramm.jar 位于同一目录中。 在我们公司,我们将所有内容包装在 shell 脚本中,以便以一种不受限的方式调用我们的脚本。
所以我的 shell 脚本 myProgrammWrapper.sh 看起来像这样:
#!bin/bash
java -jar $(cygpath -w ~/path/to/tools/myProgramm.jar) "$@"
之所以有cygpath命令,是因为sh是在cygwin中执行的,否则找不到路径。 “$@”将参数传递给程序。
问题如下:
我们的 cygwin 环境已设置为我可以从每个目录调用 myProgrammWrapper.sh。但是当然,当我从任何随机位置调用它时,都找不到 build.xml。有没有办法在shell脚本中引用build.xml。它位于~/path/to/tools/
?
首先,我正在考虑将构建文件复制到当前目录,然后将其删除。这工作得很好,但有一个根本性的缺陷。我们经常使用 ant 并拥有 build.xml 文件。因此,如果有人在已经存在 build.xml 文件的目录中执行 myProgrammWrapper.sh 。它将被覆盖。
也许这个问题可以从Java方面解决。如有任何想法和意见,我们将不胜感激。
最佳答案
为什么不让 Bash 脚本将工作目录更改为包含 XML 文件的位置?
尝试:
(cd $(cygpath -w ~/path/to/tools/) && java -jar $(cygpath -w ~/path/to/tools/myProgramm.jar) "$@")
关于java - 如何从任何目录引用文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21901462/