java - 作为 Jar 运行时出现 FileNotFoundException - Java

标签 java jar filenotfoundexception

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

BufferedReader br= new BufferedReader(new FileReader("KEY.txt"));

现在,在我编译 jar 并将 jar 和文件放在同一文件夹中并执行 iam 后,出现 FilenotFoundException。如果我在 Eclipse 中运行并完美地读取文件,该程序就可以工作。

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

最佳答案

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

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

如何执行 jar 文件?

如果 key 文件位于 jar 文件旁边,则这应该有效:

java -jar theJar.jar     

但这不会(因为 key 的路径现在是“test/KEY.txt”):

java -jar test/theJar.jar 

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

可以考虑的另一种选择(如果用户不需要编辑该文件)是将 key 文件放入 jar 文件中。这样就不会丢失,并且可以通过类加载器加载它。

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

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

关于java - 作为 Jar 运行时出现 FileNotFoundException - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9885881/

相关文章:

java - Selenium 点击浏览器的 url 而不是网站的搜索框

java - setMinimumSize() 不适用于 JButton

java - 是否可以在启动 .jar 时加载不同的配置文件?

java - 以生产就绪方式执行 bazel-buildfarm,无需 "bazel run"

java - 在 Eclipse 中导出单个 .jar 时避免重复库 .jars

java - 尝试插入重复的键行时,HibernateTemplate Save 不抛出异常

java - ibatis - 如何映射值列表

c# - 尝试从 URL 读取标记器文件时斯坦福 POS 标记器出现错误

java - 无法使用 Paths.get() 从 Maven 资源加载文件

java - 线程 "main"java.io.FileNotFoundException : (The system cannot find the path specified) 中出现异常