我有一个jar文件,我想从bash脚本中启动它。此jar包含对包含图像的外部文件夹的引用。
当我使用绝对路径从命令行运行jar时,一切正常。当我从bash脚本运行它时,问题就出现了。显然,没有找到包含图像的文件夹。
从命令行发射:
java -Djava.library.path=/opt/opencv/build/lib -Xmx1g -jar /home/version4/Podo.jarBash脚本:
#! /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)有人能告诉我我做错了什么吗?谢谢。
发布于 2015-04-01 10:13:32
您应该从运行jar文件的同一个目录中运行bash脚本。尽管如此,它仍然可以位于另一个地方,唯一有意义的细节是您的工作目录。更好的方法是将图像存储在jar中,请参阅Getting a BufferedImage as a resource so it will work in JAR file
无论如何,您不应该使用绝对路径来检索图像,因为这个解决方案只会破坏jar的任何可移植性。
发布于 2015-04-01 10:13:18
如果您从jar位置以外的位置运行bash脚本,请尝试给出图像的绝对路径(在java代码中)。
https://stackoverflow.com/questions/29387344
复制相似问题