0

我写了一个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);
4

1 回答 1

1

基于org.pdfclown.documents.contents.entities.Image我“猜测”的JavaDocs,Image.get(String)将调用转发给Image.get(File)使用String作为构造函数的参数File

这不适用于URL基于路径。相反,您需要考虑Image.get(IInputStream)(为什么这些 API 不能简单地使用现有的:P)

因此,通过 API 挖掘更多IInputStream会导致org.pdfclown.bytes.Buffer,并不完美,但它是一个链接。

您可以使用Class#getStreamAsResource并将其写入 a ByteArrayOutputStream,然后可以给您 a byte[],然后可以传递给Image.get(IInputStream)

于 2016-05-29T08:49:43.280 回答