我在Java和Netbeans方面有点新鲜,但我听说你是一个很棒且乐于助人的社区,所以你能给我一个建议,如果源代码(编译完成后)可以正常工作我点击了NetBeans中的绿色三角形,但是如果我打开 DIST / jar文件的包含(在NetBeans之外)它不是吗?
更准确地说,应用程序运行良好,但是当我点击一个按钮(使用iText插件生成PDF文件)时,一个特定的功能不会运行。
以下是不工作方法的代码的一部分(正如我提到的按钮有效,但仅当我从NetBeans启动我的应用程序时)
如果删除图像引用,应用程序可以从外部运行(总指挥官,/ dist / myapp.jar,Enter),但我真的想在PDF文件中使用该图像。路径很好(因为它是从netbeans开始的)
所以我100%确定.jar没有找到徽标(如果它没有它可以工作),但是如果它是从NetBeans启动的呢?我可以在路径上重写什么? (我尝试了#34; /"," @"," / src"而.png可以在/ src找到,就像其他图片一样完美装载))
public void pdfGenerate(String title, String text) {
............................
document.open();
Image image1 = Image.getInstance("src/logo.png");
image1.scaleToFit(200, 86);
image1.setAbsolutePosition(200f, 750f);
document.add(image1);
document.add(new Paragraph("\n\n\n\n\n" + text, FontFactory.getFont("font", BaseFont.IDENTITY_H, BaseFont.EMBEDDED)));
} catch (Exception e) {
e.printStackTrace();
}
document.close();
...............................
}
答案 0 :(得分:2)
当您将应用程序打包为jar文件时,资源也应该打包在那里。 method you are calling将字符串解释为文件名;创建和部署jar文件时,该文件不会出现在系统上。
您需要做的是指定资源的URL。您可以使用getClass().getResource(...)
执行此操作。如果您在此处开始/
指定资源路径,则将相对于类路径进行解释;否则它是相对于当前的类。
请注意,有overloaded form of Image.getInstance(...)
个网址。
所以,看起来你需要
Image image1 = Image.getInstance(getClass().getResource("/logo.png"));
您还可以使用
从命令行检查jar文件的内容jar -tf yourfile.jar
确保图像文件在那里。
答案 1 :(得分:1)
您是否尝试指定jar文件到图像的相对路径? 您的src文件夹已打包到jar中,但您正在尝试获取外部文件(图像)。
检查src文件夹是否仍与jar位于同一文件夹中。 如果它不存在,请尝试手动创建它并将图像放在那里。