首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含外部文件的Bash脚本运行jar不起作用

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

Stack Overflow用户
提问于 2015-04-01 09:35:01
回答 2查看 894关注 0票数 0

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

当我使用绝对路径从命令行运行jar时,一切正常。当我从bash脚本运行它时,问题就出现了。显然,没有找到包含图像的文件夹。

从命令行发射:

代码语言:javascript
复制
java -Djava.library.path=/opt/opencv/build/lib -Xmx1g -jar /home/version4/Podo.jar

Bash脚本:

代码语言:javascript
复制
#! /bin/bash -x
cmd="java -Djava.library.path=/opt/opencv/build/lib -Xmx1g -jar /home/version4/Podo.jar"
eval $cmd

我的映像所在的目录是: /home/version4/img

用于访问图像的Java代码:

代码语言:javascript
复制
 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));

输出错误:

代码语言:javascript
复制
   javax.imageio.IIOException: Can't read input file!
    at javax.imageio.ImageIO.read(ImageIO.java:1301)

有人能告诉我我做错了什么吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-01 10:13:32

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

无论如何,您不应该使用绝对路径来检索图像,因为这个解决方案只会破坏jar的任何可移植性。

票数 0
EN

Stack Overflow用户

发布于 2015-04-01 10:13:18

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29387344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档