Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java是';编译时,不要在源代码中获取文件_Java_File_Nullpointerexception_Nosuchfileexception - Fatal编程技术网

Java是';编译时,不要在源代码中获取文件

Java是';编译时,不要在源代码中获取文件,java,file,nullpointerexception,nosuchfileexception,Java,File,Nullpointerexception,Nosuchfileexception,最近我对Java有一个问题。我试过在网上找到的一些东西,但都没用,所以我需要帮助。 我在Eclipse中有一个Java项目。我的主要类在src/programCode/UI\u Main2.java中。在.java中,我尝试访问src/files/file.file中的文件 这就是事情变得奇怪的时候 如果我使用/src/files/File.File它会给我NoSuchFileException 如果我使用src/files/File.File它在Eclipse中工作,但是当我将它编译成一个可

最近我对Java有一个问题。我试过在网上找到的一些东西,但都没用,所以我需要帮助。 我在Eclipse中有一个Java项目。我的主要类在
src/programCode/UI\u Main2.java
中。在
.java
中,我尝试访问
src/files/file.file中的文件

这就是事情变得奇怪的时候

  • 如果我使用
    /src/files/File.File
    它会给我
    NoSuchFileException

  • 如果我使用
    src/files/File.File
    它在Eclipse中工作,但是当我将它编译成一个可执行的.jar时,它会给我
    NoSuchFileException

  • 如果我使用
    /files/File.File
    它会给我
    NoSuchFileException

  • 如果我使用
    files/File.File
    它会给我
    NoSuchFileException

  • 如果我使用
    files/File.File
    它会给我
    NoSuchFileException

  • 如果我使用
    this.getClass().getResource(“/files/File.File”).getPath().substring(1)
    (没有子字符串,它会给我无效字符),它会给我
    NoSuchFileException
    (但它会显示绝对路径,并且文件存在于那里!)

  • 如果我使用
    this.getClass().getResource(“files/File.File”).getPath()
    它会给我
    NullPointerException
    ,程序就会崩溃

  • 如果我使用
    this.getClass().getResource(“src/files/File.File”).getPath()
    它会给我
    NullPointerException
    ,程序就会崩溃

  • 如果我使用
    this.getClass().getResource(“/src/files/File.File”).getPath()
    它会给我
    NullPointerException
    ,程序就会崩溃

所以,我不知道该怎么办
src/files/File.File
是唯一有效的方法,但在编译为可执行jar时就不行了。所以,请帮帮我,我还没有找到任何解决办法。
谢谢

假设您的目的是在自己的开发计算机上运行编译的程序,则需要提供所需文件的完整路径。这条完整的路径的形式是

<Eclipse workspace location>\<project name>\<file location in project>
\\

查找文件取决于两件事:

  • 使用绝对路径还是相对路径
  • 你的工作目录在哪里
在类Unix系统下,当您使用类似于
/dir1/dir2/file的路径时,您使用的是绝对路径,所以您的工作目录并不重要,但必须在该路径下有一个文件

在您的例子中,您尝试使用相对路径,因此不应该在开始时使用
/

本案例对您的问题至关重要:

"If I use src/files/File.file it works in Eclipse but when I compile it to a executable .jar it gives me NoSuchFileException." 
默认情况下,Eclipse使用
src
的父目录作为工作目录(通常是项目的目录),因此从那里开始,您确实在该路径下有一个文件

启动
.jar
时,您的工作目录在其他地方。将
.jar
放在
src
的父目录中,它应该可以工作

现在,我建议您将文件的位置更改为
src
以外的目录(称之为
resrces
或其他什么),并将其与
.jar
一起提供

此外,这里还有一个关于工作目录和
.jar
文件的有趣讨论:

如果要分发单个
.jar
,这里有一个很好的打包说明:


源代码通常不适用于已编译的程序,但资源是可用的。谢谢,但我也想在其他计算机上使用它。谢谢,它现在起作用了!但我如何在没有文件夹的情况下在一个.jar中实现这一点?我编译了另一个jar,其中包含文件夹和app jar?下面是一个简单的说明:或者更详细的说明: