作为Jar-Java运行时FileNotFoundException

作为Jar-Java运行时FileNotFoundException,java,jar,filenotfoundexception,Java,Jar,Filenotfoundexception,我已经使用eclipse和iam编写了java代码,读取文件并处理代码。key.txt与src位于同一文件夹中 BufferedReader br= new BufferedReader(new FileReader("KEY.txt")); 现在,在编译jar并将jar和文件放在同一个文件夹中,然后执行iam getting FilenotFoundException。如果我在Eclipse内部运行并完美地读取文件,该程序就会工作 jar文件和key.txt必须始终位于同一文件夹中。 请告诉

我已经使用eclipse和iam编写了java代码,读取文件并处理代码。key.txt与src位于同一文件夹中

BufferedReader br= new BufferedReader(new FileReader("KEY.txt"));
现在,在编译jar并将jar和文件放在同一个文件夹中,然后执行iam getting FilenotFoundException。如果我在Eclipse内部运行并完美地读取文件,该程序就会工作

jar文件和key.txt必须始终位于同一文件夹中。
请告诉我如何解决FilenotFoundException的问题。

您的代码在当前工作目录中打开一个文件,该目录是启动Java进程的目录

这与jar文件的位置完全无关

如何执行jar文件

如果密钥文件就在jar文件的旁边,那么应该可以:

java -jar theJar.jar     
但这不会(因为现在密钥的路径是“test/key.txt”):

在Eclipse中运行程序时,当前工作目录(通常)是项目根文件夹

一个可供选择的替代方案(如果文件不需要由用户编辑),就是将密钥文件放入JAR文件中。这样它就不会丢失,您可以通过类加载器加载它

另一个好的选择是让用户通过命令行参数或系统属性提供文件的路径


或者创建一个批处理文件/shell脚本,确保始终从正确的目录运行。

我认为您应该将这些文件与正在运行的类的类文件放在一起,因为当前目录是存储类文件的目录,而不是源java文件。

您使用的是eclipse so,您已经将这个jar添加为库还是简单地放入文件夹?,并且key.txt在jar文件中?你能分享你的文件夹结构吗?当你从jar运行你的应用程序时,你是否与包含jar文件和txt文件的目录在同一个目录下?1)如果资源是可编辑的,或者下载后添加的,请将
KEY.txt
放入子目录(可能基于主类的包)属于
user.home
。这是一条可读写的可复制路径。2) 如果它是静态的,并且与应用程序同时在Jar中提供,请通过从
this.getClass().getResource(“path/name.type”)
获取的URL访问它。感谢您的回复。因此,我应该如何修改我的程序,以便无论用户提供什么文件夹,我都可以将jar和key.txt放在同一个文件夹中。如果他们两个都在一起,应该可以。请建议。谢谢。让我试着给你回电话。
java -jar test/theJar.jar