我真的需要你的帮助来解决我自己的问题。现在,我正在处理小代码应用程序。在该项目文件夹中包含一些资源文件(* .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中的项目文件夹结构:
答案 0 :(得分:3)
首先,永远不要直接引用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...
答案 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信息