包含外部文件的Bash脚本运行jar不起作用

时间:2015-04-01 09:35:02

标签: java linux bash jar

我有一个jar文件,我想从bash脚本启动。此jar包含对包含图像的外部文件夹的引用。

当我从命令行运行jar并使用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

我的图片所在的目录是:       /家/版本4 / 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)

谁能告诉我我做错了什么?谢谢。

2 个答案:

答案 0 :(得分:0)

如果从jar位置以外的位置运行bash脚本,请尝试给出图像的绝对路径(在java代码中)。

答案 1 :(得分:0)

您应该在运行jar文件的同一目录中运行bash脚本。不过,它可以位于另一个地方,唯一含义的细节是您的工作目录。更好的方法是将图像存储在jar中,请参阅Getting a BufferedImage as a resource so it will work in JAR file

在任何情况下,您都不应该使用绝对路径来检索图像,因为此解决方案只会破坏jar的任何可移植性。