来自eclipse的可执行jar无法在包中使用图像......有时
executable jar from eclipse unable to use images within packages... sometimes
我写了一个 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);
基于 org.pdfclown.documents.contents.entities.Image
的 JavaDocs,我 "guess" Image.get(String)
使用 String
作为构造函数的参数将调用转发给 Image.get(File)
共 File
这不适用于基于 URL
的路径。相反,您需要关注 Image.get(IInputStream)
(为什么这些 API 不能简单地使用现有的 :P)
所以,通过 API 挖掘更多 IInputStream
导致 org.pdfclown.bytes.Buffer
,不完美,但它是 link。
您可以使用 Class#getStreamAsResource
并将其写入一个 ByteArrayOutputStream
,然后可以给您一个 byte[]
,然后可以传递给 Image.get(IInputStream)
我写了一个 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);
基于 org.pdfclown.documents.contents.entities.Image
的 JavaDocs,我 "guess" Image.get(String)
使用 String
作为构造函数的参数将调用转发给 Image.get(File)
共 File
这不适用于基于 URL
的路径。相反,您需要关注 Image.get(IInputStream)
(为什么这些 API 不能简单地使用现有的 :P)
所以,通过 API 挖掘更多 IInputStream
导致 org.pdfclown.bytes.Buffer
,不完美,但它是 link。
您可以使用 Class#getStreamAsResource
并将其写入一个 ByteArrayOutputStream
,然后可以给您一个 byte[]
,然后可以传递给 Image.get(IInputStream)