.Jar 文件在 NeBeans 中运行良好,但在 /dist lib 中运行不佳

.Jar file runs well from NeBeans but not from /dist lib

我对 Java 和 Netbeans 有点陌生,但我听说你们是一个很棒且乐于助人的社区,所以你能给我一个建议吗源代码(编译后) ) 如果我在 NetBeans 中点击绿色三角形,则工作正常,但如果我打开 DIST/jar 文件的包含(在 NetBeans 之外),它不是?

更准确地说,应用程序 运行 很好,但是当我单击一个按钮(使用 iText 插件生成 PDF)时,一个特定的功能没有 运行。

这是无效方法的一部分代码(正如我提到的 按钮有效,但前提是我从 NetBeans 启动我的应用程序

如果我删除图像引用,应用程序 运行s 很好地来自外部(总指挥官,/dist/myapp.jar,回车),但我真的很想使用 PDF 中的图像文件。路径很好(因为它是从 netbeans 工作的)

所以我 100% 确定 .jar 找不到徽标(如果没有它也能正常工作),但是如果它是从 NetBeans 启动的,它怎么能找到呢?我可以在路径上重写什么? (我尝试了“/”、“@”、“/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();
  ...............................
  }

您是否尝试指定从 jar 文件到图像的相对路径? 您的 src 文件夹已打包到 jar 中,但您正在尝试获取外部文件(图像)。

检查 src-folder 是否仍然位于与 jar 相同的文件夹中。 如果它不存在,请尝试手动创建它并将图像放在那里。

当您将应用程序打包为 jar 文件时,资源也应该打包在那里。 method you are calling 将字符串解释为文件名;创建和部署 jar 文件时,该文件将不会出现在系统上。

您需要做的是为资源指定一个URL。您可以使用 getClass().getResource(...) 执行此操作。如果你在这里指定一个资源路径从/开始,它将被解释为相对于class路径;否则它是相对于当前的 class。

请注意,有一个 overloaded form of Image.getInstance(...) 占用 URL。

看来你需要

Image image1 = Image.getInstance(getClass().getResource("/logo.png"));

您还可以使用

从命令行检查 jar 文件的内容
jar -tf yourfile.jar

确保图像文件在那里。