gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 03:41:42 24 4
gpt4 key购买 nike

我有一个 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

我的图像所在的目录是: /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 脚本。不过,它可以位于其他位置,唯一有意义的细节是您的工作目录。更好的方法是将图像存储在 jar 中,请参阅 Getting a BufferedImage as a resource so it will work in JAR file

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

关于java - Bash 脚本运行包含外部文件的 jar 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29387344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com