【问题标题】:NoSuchFileException when running jar file运行 jar 文件时出现 NoSuchFileException
【发布时间】:2018-04-25 01:32:56
【问题描述】:

当我运行访问src 目录中其他文件的 jar 文件时,我得到以下RuntimeException

线程“主”java.nio.file.NoSuchFileException 中的异常: src\FileToBeAccessed.txt.lck 在 sun.nio.fs.WindowsException.translateToIOException(未知来源) 在 sun.nio.fs.WindowsException.rethrowAsIOException(未知来源) 在 sun.nio.fs.WindowsException.rethrowAsIOException(未知来源) 在 sun.nio.fs.WindowsFileSystemProvider.newFileChannel(未知来源) 在 java.nio.channels.FileChannel.open(未知来源) 在 java.nio.channels.FileChannel.open(未知来源) 在 java.util.logging.FileHandler.openFiles(未知来源) 在 java.util.logging.FileHandler.(未知来源) 在 Program.main(Program.java:30)

当我直接运行代码而不构建 jar 文件时,代码运行良好。

【问题讨论】:

  • 那个文件存在吗?路径正确吗?
  • 程序导出到jar后src目录就不存在了,任何资源都会自己打包到jar文件中,这意味着你不能再把它们当成文件,而是需要使用Class#getResourceClass#getResourceAsStream 取决于您的需要。每天都会被问几次,所以你做一些搜索,我相信你会找到一些对你有帮助的答案
  • @MadProgrammer 我没有找到任何东西,但是谢谢,我想我现在可以修复它
  • @Shreyas Chavan 点击“jar 文件”

标签: java runtimeexception


【解决方案1】:

您需要将访问 jar 中资源的方式更改为流。

this.getClass().getResourceAsStream("/file.txt");

【讨论】:

    【解决方案2】:

    正确的做法是

    this.getClass().getResourceAsStream("file.txt");
    

    【讨论】:

      【解决方案3】:

      真的很奇怪

      this.getClass().getResource("file.txt")
      

      在 IDE 中可以工作,但从 jar 中运行时则不行。

      this.getClass().getResourceAsStream("file.txt") 
      

      在 IDE 和 jar 中都可以工作。

      【讨论】:

        猜你喜欢
        • 2018-03-12
        • 2019-04-29
        • 2019-08-20
        • 2023-03-27
        • 1970-01-01
        • 2010-09-23
        • 1970-01-01
        相关资源
        最近更新 更多