【问题标题】:Exported JAR is not creating files it should导出的 JAR 没有创建它应该创建的文件
【发布时间】:2016-02-06 23:00:25
【问题描述】:

我使用 swing 在 Netbeans 中创建了一个 Java 应用程序,它完美地完成了很多事情,它还创建了一个文件夹,并在该文件夹中创建了一个 ms word 文件和 2 个 jpeg 图像。

如果我在 Netbeans 中运行应用程序,它会像 expeted 一样工作,创建文件夹和文件,没有问题。

但是当我将它导出为 jar 时,jar 运行良好,并且还创建了文件夹,但它不会创建 word 文档或图像文件。

我也尝试更改文件的路径,但它不会创建它们。

我已经在 windows 属性中检查了我导出的 jar 的权限,它拥有所有权限。

我使用 apache poi 创建 word 文档和 jfree 图表创建图像,我使用 netbeans 中的“clean and build”菜单导出它。

如果需要,我可以提供更多信息,感谢阅读。

【问题讨论】:

  • 程序行为不同的原因有很多。它可能在不同的 JVM 下运行。不同的起始当前目录通常会有所不同。在终端中运行,这样您一定会看到抛出的任何异常。如有必要,添加额外的日志记录以验证生成文件的函数仍然被调用。
  • 感谢您的回答,我用命令窗口运行了 jar,结果问题是,应用程序找不到资源,它们在那里我解压 jar 来检查它。我得到一个文件未找到异常,我试图更改我的项目中的路径,但它仍然是一样的 :( 我正在寻找更多信息,但如果你能帮助我。
  • 找到了我的问题,我改变了它查找资源的方式,现在在答案部分进行了解释。它现在可以正常工作了,感谢您的帮助。

标签: java swing netbeans jar ms-word


【解决方案1】:

感谢 WillShackleford

好吧,我打开一个命令提示符并使用“java -jar MyJar.jar”命令运行 jar,我得到了抛出的异常,我可以看到问题,它没有找到图像。

问题是我如何编码来获取资源,是这样的:

InputStream img = new FileInputStream("src/images/image.jpg");

但是调用资源的正确方式是:

InputStream img = InputStream.class.getResourceAsStream("/images/image.jpg");

我删除了“src”,因为该文件夹在 Jar 文件中不存在,而“/”用于引用 jar 的根目录。

【讨论】:

    猜你喜欢
    • 2012-08-16
    • 2019-01-14
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2020-09-18
    • 2020-05-20
    相关资源
    最近更新 更多