Java代码在Netbeans IDE中生成和清理后找不到资源文件?

Java代码在Netbeans IDE中生成和清理后找不到资源文件?,java,swing,netbeans,file-io,Java,Swing,Netbeans,File Io,我真的需要你的帮助来解决我自己的问题。现在,我正在处理小代码应用程序。该项目文件夹中包含一些资源文件(*.xlsx,*.png,…)。我把它们和代码文件放在当前文件夹中。我只是想知道,当我在NetBeanIDE中运行我的代码时,它是否能正常工作 在我构建代码项目之后,我在“dist”目录中得到一个jar文件。我负责。由于应用程序使用JFrame作为用户界面,所以它正常打开。然而,当我执行该应用程序的某些功能时,它显示了错误日志。以下是错误消息: java.io.FileNotFoundExcep

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

在我构建代码项目之后,我在“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中的项目文件夹结构:

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

  • 首先,不要直接引用
    src
    ,一旦程序构建,目录将不存在。其次,您不能通过
    文件
    引用访问已嵌入应用程序上下文中的资源,因为它们在文件系统中已不存在

    相反,您需要使用
    Class#getResource
    Class#getresourceastream

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

    首先,不要直接引用
    src
    ,一旦程序构建,目录将不存在。其次,您不能通过
    文件
    引用访问已嵌入应用程序上下文中的资源,因为它们在文件系统中已不存在

    相反,您需要使用
    Class#getResource
    Class#getresourceastream

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

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

    请参考信息

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

    请参考信息

    谢谢。让我试试。对不起!!它仍然保持不变。顺便说一下,当我在WinRAR中打开jar文件时,我看到sample.xlsx也在其中。问题是我可以引用该文件吗?
    sample.xlsx
    不再是一个文件,而是由zip条目管理的一系列压缩字节。上面的示例是返回结果还是返回
    null
    (或异常)?您好。我只是想澄清一下。你投了哪一票?@hims056哇,好吧,我想我选了“为什么这个代码不起作用”选项。让我试试。对不起!!它仍然保持不变。顺便说一下,当我在WinRAR中打开jar文件时,我看到sample.xlsx也在其中。问题是我可以引用该文件吗?
    sample.xlsx
    不再是一个文件,而是由zip条目管理的一系列压缩字节。上面的示例是返回结果还是返回
    null
    (或异常)?您好。我只是想澄清一下。你投了哪一票?@hims056哇,好吧,我想我选择了“为什么这个代码不起作用”选项希望,这个,能够在这个话题上有所帮助:-)@nIcEcOw,谢谢。希望这个,能够在这个主题上有所帮助:-)@nIcEcOw,谢谢。它在工作。