我真的需要你的帮助来解决我自己的问题。现在,我正在处理小代码应用程序。在该项目文件夹中包含一些资源文件(*.xlsx, *.png,…)。我把它们放在当前文件夹与代码文件。我只是想知道,当我在netbean ide中运行我的代码时,它只是工作。
在我构建代码项目之后,我在"dist"目录下得到一个jar文件。我运行它。它正常打开,因为应用程序使用JFrame作为用户界面。然而,当我执行该应用程序的某些功能时,它会显示错误日志。下面是错误信息:
java.io.FileNotFoundException:
srcsample.xlsx (The system cannot find the path specified)
外面出什么事了?
下面是我的一些代码:
copyFile(new File("src\sample.xlsx"),
new File(txtout.getText()+"\sample.xlsx"));
Node: copyFile函数用于从源文件复制到dest。
以下是我在Netbean IDE中的项目文件夹结构:
- 项目名称
- 源代码开放(src)
- 源代码开放(src)
首先,永远不要直接引用src
,一旦程序构建完成,该目录将不存在。其次,您不能通过File
引用访问嵌入到应用程序上下文中的资源,它们在文件系统中不再存在。
您需要使用Class#getResource
或Class#getResourceAsStream
URL url = getClass().getResource("/sample.xlsx");
InputStream is = getClass().getResourceAsStream("/sample.xlsx");
// Don't forget to manage your streams appropriately...
你可以在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 );
请参考链接信息