无法从MAC上的脚本访问jar文件

4

我想编写一个脚本来运行一个.jar文件。 下面的命令可以从终端(在.jar文件所在的文件夹中)运行:

java -jar "./myjavatest.jar" 

当我把这行代码放在一个文件里并从同一文件夹中运行它时(使用终端或在Finder中双击),我会得到"无法访问./myjavatest.jar的jar文件"。

我发现,当我双击一个文件时,它实际上是从用户主目录中运行的。 是否可能从文件所在的文件夹运行它?


你可以进入包含 .jar 文件的目录,然后使用完整路径而不是相对路径。 - Sg1team
将您的jar文件放置在与脚本相同的文件夹中,然后只需使用java -jar myjavatest.jar即可。 - Sajan Chandran
3个回答

6
我发现当我双击一个文件时,它实际上是从用户主目录运行的。是否可以从文件所在的文件夹运行它?
是的,可以:
SOURCE="${BASH_SOURCE[0]}"
DIR="$( dirname "$SOURCE" )"
while [ -h "$SOURCE" ]
do 
  SOURCE="$(readlink "$SOURCE")"
  [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
  DIR="$( cd -P "$( dirname "$SOURCE"  )" && pwd )"
done
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"

cd "$DIR"

java -jar myjavatest.jar

0

我曾经遇到过这样的问题,尝试执行一个包含以下内容的 .sh 文件: java -Dlog4j.configuration=file:log4j.properties -jar -Dfile.encoding=ISO-8859-1 mainRPV.jar

问题在于,由于某种原因,文件格式被更改为 DOS 而不是 UNIX,可能是因为它在 Windows 中被编辑和保存。 这与行结尾有关。

尝试使用 vim 打开文件并运行此命令::set ff=unix

祝好!


0
你尝试过使用 chmod 755 javatest.jar 更改文件和目录的权限吗?

是的,我做了。什么都没有。 当我在脚本文件中执行“ls”命令时,我发现它是从用户主目录而不是脚本目录运行的。这就是为什么找不到jar文件的原因。 - Asaf Pinhassi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接