我已经编写了一个swing应用程序,它在eclipse中运行正常但是当我将它作为一个可运行的jar导出时,应用程序的部分失败,在处理图像时,例如这一行;
logo = getClass().getResource("/com/cogentautomation/logo.jpg").getPath();
eclipse将图像打包在com.cogentautomation包中,我可以在.jar
本身看到它,我已经尝试了两种导出方法,提取所需的库并打包所需的库,一个人说;
FileNotFoundException com\cogentautomation\logo.jpg
另一个说;
FileNotFoundException file:\c:\documents\hs.jar!\com\cogentautomation\logo.jpg
我正在使用一个库来解析PDF文件,这是发生此错误的地方,但它可以在eclipse中使用,也可以在磁盘上不是java资源的其他图像中使用。
我已经阅读了有关此问题的其他主题,但似乎没有任何帮助。
编辑:在评论中解决一些问题,我需要一个String
变量我正在使用的库需要一个字符串输入来读取图像;
import org.pdfclown.documents.contents.entities.Image;
Image image = Image.get(logo);
答案 0 :(得分:1)
根据org.pdfclown.documents.contents.entities.Image
的JavaDocs,我“猜测”Image.get(String)
使用Image.get(File)
将String
作为{{1}的构造函数的参数转发给File
}}
这不适用于基于URL
的路径。相反,您需要关注Image.get(IInputStream)
(为什么这些API不能简单地使用已有的API:P)
因此,通过API挖掘更多IInputStream
导致org.pdfclown.bytes.Buffer
,并非完美,但它是一个链接。
您可以使用Class#getStreamAsResource
并将其写入ByteArrayOutputStream
,然后可以为您提供byte[]
,然后可以转到Image.get(IInputStream)