Bash 包含外部文件的脚本 运行 jar 不起作用
Bash script run jar with external files included does not work
我有一个要从 bash 脚本启动的 jar 文件。此 jar 包括对包含图像的外部文件夹的引用。
当我使用 jar 的绝对路径从命令行 运行ning jar 时,一切正常。当我从 bash 脚本 运行 时出现问题。显然找不到包含图像的文件夹。
从命令行启动:
java -Djava.library.path=/opt/opencv/build/lib -Xmx1g -jar /home/version4/Podo.jar
Bash 脚本:
#! /bin/bash -x
cmd="java -Djava.library.path=/opt/opencv/build/lib -Xmx1g -jar /home/version4/Podo.jar"
eval $cmd
我的图片所在的目录是:
/home/version4/img
获取图片的Java代码:
String img_header="./img/HEADER.png";
String img_body="./img/BODY.png";
BufferedImage header,body;
header=ImageIO.read(new File(img_header));
body=ImageIO.read(new File(img_body));
输出错误:
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(ImageIO.java:1301)
谁能告诉我我做错了什么?谢谢。
如果您是 运行 来自 jar 位置以外的位置的 bash 脚本,请尝试提供图像的绝对路径(在您的 java 代码中)。
您应该 运行 您的 bash 脚本来自与 运行 您的 jar 文件相同的目录。不过,它可以位于另一个地方,唯一有意义的细节是你的工作目录。更好的方法是将图像存储在 jar 中,请参阅 Getting a BufferedImage as a resource so it will work in JAR file
在任何情况下,您都不应该使用绝对路径来检索图像,因为此解决方案只会破坏您的 jar 的任何可移植性。
我有一个要从 bash 脚本启动的 jar 文件。此 jar 包括对包含图像的外部文件夹的引用。
当我使用 jar 的绝对路径从命令行 运行ning jar 时,一切正常。当我从 bash 脚本 运行 时出现问题。显然找不到包含图像的文件夹。
从命令行启动:
java -Djava.library.path=/opt/opencv/build/lib -Xmx1g -jar /home/version4/Podo.jar
Bash 脚本:
#! /bin/bash -x
cmd="java -Djava.library.path=/opt/opencv/build/lib -Xmx1g -jar /home/version4/Podo.jar"
eval $cmd
我的图片所在的目录是: /home/version4/img
获取图片的Java代码:
String img_header="./img/HEADER.png";
String img_body="./img/BODY.png";
BufferedImage header,body;
header=ImageIO.read(new File(img_header));
body=ImageIO.read(new File(img_body));
输出错误:
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(ImageIO.java:1301)
谁能告诉我我做错了什么?谢谢。
如果您是 运行 来自 jar 位置以外的位置的 bash 脚本,请尝试提供图像的绝对路径(在您的 java 代码中)。
您应该 运行 您的 bash 脚本来自与 运行 您的 jar 文件相同的目录。不过,它可以位于另一个地方,唯一有意义的细节是你的工作目录。更好的方法是将图像存储在 jar 中,请参阅 Getting a BufferedImage as a resource so it will work in JAR file
在任何情况下,您都不应该使用绝对路径来检索图像,因为此解决方案只会破坏您的 jar 的任何可移植性。