.Jar文件可以从NeBeans运行良好,但不能从/ dist lib运行

时间:2015-03-23 15:12:15

标签: image pdf netbeans javafx window

我在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();
  ...............................
  }

2 个答案:

答案 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位于同一文件夹中。 如果它不存在,请尝试手动创建它并将图像放在那里。