来自eclipse的可执行jar无法在包中使用图像...有时候

时间:2016-05-28 21:34:35

标签: java eclipse swing pdfclown

我已经编写了一个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);

1 个答案:

答案 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)