eclipse中的java文件相对路径

eclipse中的java文件相对路径,java,file,path,io,bufferedreader,Java,File,Path,Io,Bufferedreader,三天来,我一直在试图找出如何使用相对文件路径读取文件。在eclipse中,这可以编译并工作得很好,但当我导出应用程序时。它说它找不到文件。这是我的截图和代码 这段代码可以工作,但只有在eclipse中,它才能编译并完美地完成这项工作。但当我将其导出为可运行jar文件时,我得到一个错误,即它找不到licenca.txt BufferedReader in = new BufferedReader(new FileReader(new File("licenca.txt").g

三天来,我一直在试图找出如何使用相对文件路径读取文件。在eclipse中,这可以编译并工作得很好,但当我导出应用程序时。它说它找不到文件。这是我的截图和代码

这段代码可以工作,但只有在eclipse中,它才能编译并完美地完成这项工作。但当我将其导出为可运行jar文件时,我得到一个错误,即它找不到licenca.txt

 BufferedReader in = new BufferedReader(new FileReader(new File("licenca.txt").getPath()));
        String str;
        while ((str = in.readLine()) != null) {
      taLicenca.append(str + "\n");
      
    }
这是我的项目文件的截图

我尝试过使用scanner函数,结果仍然一样,它在eclipse中工作,但在导出中不工作。以下是错误消息:


我敢打赌,如果你把那个文件放到类路径中,它会起作用的

按如下方式更改代码:

InputStream is = this.getClass().getClassLoader().getResourceAsStream("licenca.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(is));
String str;
while ((str = in.readLine()) != null) {
    taLicenca.append(str + "\n");
}

试试看。

我敢打赌,如果你把这个文件放到类路径中,它一定会起作用

按如下方式更改代码:

InputStream is = this.getClass().getClassLoader().getResourceAsStream("licenca.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(is));
String str;
while ((str = in.readLine()) != null) {
    taLicenca.append(str + "\n");
}

试试看。

发生这种情况是因为您的文件是作为jar文件的一部分导出的,因此,要创建jar文件,请尝试使用ant或maven或semething,或者使用jar手动复制目录中的文件,它会调用start directory。

发生这种情况是因为您的文件是作为jar文件的一部分导出的,所以,要创建jar文件,请尝试使用ant、maven或semething,或者使用jar手动复制目录中的文件,它将调用start directory。

+1是的,它会工作,但我认为他必须理解发生了什么:他已经在使用Eclipse来掩盖他对类路径的缺乏了解。我想船已经开航了。不,它不会工作:P当我添加InputStream时,它是=this.getClass.getClassLoader.getResourceAsStreamlicenca.txt;我应该将其转换为InputStream类型,当我这样做时,会在线程main的编译异常上显示此错误`java.lang.error:未解决的编译问题:类型不匹配:无法从java.io.InputStream转换为org.omg.CORBA.portable.InputStream`我不这么认为,如果他能理解,他不会问这个问题,正如您所描述的,只需手动复制资源以启动文件夹或从jar获取即可。+1是的,它会起作用,但我认为他必须理解发生了什么:他已经在使用Eclipse来掩盖他对类路径的知识缺乏。我想船已经开航了。不,它不会工作:P当我添加InputStream时,它是=this.getClass.getClassLoader.getResourceAsStreamlicenca.txt;我应该将其转换为InputStream类型,当我这样做时,会在线程main的编译异常上显示此错误`java.lang.error:未解决的编译问题:类型不匹配:无法从java.io.InputStream转换为org.omg.CORBA.portable.InputStream`我不这么认为,如果他能理解,他不会问这个问题,只需手动将资源复制到启动文件夹或从jar获取,如您所述。相对路径取决于应用程序的工作目录。此外,我想您不能简单地访问jar中的文件。考虑使用Case.GETRoad方法,如果它在jar中。如果文件与jar位于同一文件夹中,则可以使用jar的路径,请参见。您也可以在注册表中存储许可证的完整路径,但这取决于您的环境。相对路径取决于应用程序的工作目录。此外,我想您不能简单地访问jar中的文件。考虑使用Case.GETRoad方法,如果它在jar中。如果文件与jar位于同一文件夹中,则可以使用jar的路径,请参见。您还可以在注册表中存储许可证的完整路径,但这取决于您的环境。