在Netbeans IDE中构建和清理后,Java代码无法找到资源文件?

时间:2014-06-19 04:36:56

标签: java swing netbeans file-io

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

在构建代码项目之后,我在“dist”目录中获得了一个jar文件。我跑了它正常打开,因为app使用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函数用于从源到dest的复制文件。

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

  1. 项目名称
    • Source Pakage(src)
      • myClass.java,sample.xlsx等

2 个答案:

答案 0 :(得分:3)

首先,永远不要直接引用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...

答案 1 :(得分:2)

您可以在resources文件夹下创建一个名为src的文件夹,将您的资源放入其中,并使用getResourceAsStream()getResource()方法在代码中使用它们访问嵌入式资源。Clean and Build将编译代码并将resources文件夹的内容嵌入到应用程序的.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信息