【问题标题】:Java code cannot find resource file after build and clean in Netbeans IDE?Java 代码在 Netbeans IDE 中构建和清理后找不到资源文件?
【发布时间】:2014-06-19 04:36:55
【问题描述】:

我真的需要你的帮助来解决我自己的问题。现在,我正在处理小型代码应用程序。在该项目文件夹中包含一些资源文件(*.xlsx、*.png、...)。我将它们放在带有代码文件的当前文件夹中。我只是想知道,当我在 netbean ide 中运行我的代码时,它可以正常工作。

构建代码项目后,我在“dist”目录中获得了一个 jar 文件。我运行它。它正常打开,因为应用程序使用 JFrame 作为用户界面。但是,当我执行该应用程序的某些功能时,它向我显示了错误日志。这是错误消息:

java.io.FileNotFoundException: 
src\sample.xlsx (The system cannot find the path specified)

这是怎么回事?

这是我的一些代码:

copyFile(new File("src\\sample.xlsx"),
new File(txtout.getText()+"\\sample.xlsx"));

节点: copyFile 函数用于将文件从源复制到目标。

这是我在 Netbean IDE 中的项目文件夹结构:

  1. 项目名称
    • 源包(src)
      • myClass.java、sample.xlsx 等

【问题讨论】:

  • 希望这个answer能够在这个话题上有所帮助:-)
  • @nIcEcOw,谢谢。它工作。

标签: java swing netbeans file-io


【解决方案1】:

首先,永远不要直接引用src,一旦程序构建,该目录将不存在。其次,您无法通过 File 引用访问已嵌入应用程序上下文中的资源,它们根本不再存在于文件系统中。

相反,您需要使用Class#getResourceClass#getResourceAsStream

URL url = getClass().getResource("/sample.xlsx");
InputStream is = getClass().getResourceAsStream("/sample.xlsx");
// Don't forget to manage your streams appropriately...

【讨论】:

  • 谢谢。让我试试看。
  • 对不起!!它仍然保持不变。顺便说一句,当我在 WinRAR 中打开 jar 文件时,我看到 sample.xlsx 也在那里。问题是我可以参考那个文件吗?
  • sample.xlsx 不再是文件,它是由 zip 条目管理的压缩字节序列。上面的例子是返回结果还是返回null(或异常)?
  • 嗨。只是为了澄清与this Meta question 相关的内容。你在this question投了哪一票?
  • @hims056 哇,好吧,我想我选择了“为什么这段代码不起作用”选项
【解决方案2】:

您可以在src 文件夹下创建一个名为resources 的文件夹,将您的资源放入其中并通过使用可以访问嵌入式资源的getResourceAsStream()getResource() 方法在您的代码中使用它们。Clean and Build将编译代码并将资源文件夹的内容嵌入到应用程序的 .jar 文件中。 获取资源的方式:

    String pathToImage = "resources/images/filling.png";
    InputStream stream= ClassName.class.getResourceAsStream(pathToImage );

   String pathToImage = "resources/images/filling.png";
   InputStream stream= ClassName.class.getResource(pathToImage );

请参考link信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多