代码之家  ›  专栏  ›  技术社区  ›  Scriptim

运行jar文件时出现NoSuchFileException

  •  1
  • Scriptim  · 技术社区  · 9 年前

    当我运行一个jar文件来访问 src 目录,我得到以下信息 RuntimeException :

    线程“main”java.nio.file.NoSuchFileException中出现异常: src\要访问的文件.txt.lck 位于sun.nio.fs.WindowsException。translateToIOException(未知源) 位于sun.nio.fs.WindowsException。rethrowAsIOException(未知源) 位于sun.nio.fs.WindowsException。rethrowAsIOException(未知源) 位于sun.nio.fs.WindowsFileSystemProvider。newFileChannel(未知源) 位于java.nio.chhannels.FileChannel。打开(未知源) 位于java.nio.chhannels.FileChannel。打开(未知源) 位于java.util.logging.FileHandler。openFiles(未知源) 位于java.util.logging.FileHandler。(未知来源) 在Program.main(Program.java:30)

    当我在不构建jar文件的情况下直接运行它时,代码工作得很好。

    3 回复  |  直到 7 年前
        1
  •  2
  •   Pumphouse    9 年前

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

    this.getClass().getResourceAsStream("/file.txt");
    
        2
  •  2
  •   Raashith    8 年前

    正确的方法是

    this.getClass().getResourceAsStream("file.txt");
    
        3
  •  2
  •   user2995358    8 年前

    真奇怪

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

    确实在IDE中工作,但当您从jar中运行它时不工作。

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

    既可以在IDE内部工作,也可以在jar中工作。