从 Runnable Jar 访问文件
Accessing Files From Runnable Jar
快速免责声明:我是 java 的新手,我知道这个问题已在其他线程中得到解答,但我无法理解那里的答案,所以我真的希望得到一个非常 simple/understandable请解释。
无论如何,我的问题是我正在使用 Eclipse 制作一个使用文本文件和图片的程序,当它通过 Eclipse 运行时,如果我尝试将它导出到 运行nable jar,我不能访问我的资源了。当前,当我从 Eclipse 中 运行 东西时,我的目录结构是:
Desktop -->
workspace -->
QuizProgram -->
bin
src
Questions.txt
right.png
我通过以下方式访问我的图像和文本文件:
BufferedReader br = new BufferedReader(new FileReader("Questions.txt"));
BufferedImage right = ImageIO.read(new File("Right.png"));
如果有人愿意,我将逐步解释将我的 files/change 我的代码移至何处,我将不胜感激。我浏览了许多其他主题,Classpath/ClassLoader 真的让我感到困惑。我已经尝试了一些
this.getClass().getResource("File.txt");
东西也有,但似乎没有任何效果。请帮忙,我有一个完成的程序,最后一件事真的很令人沮丧,谢谢!
编辑 1:所以我尝试了 user2933977 的建议,并将 getResource 更改为 getResourceAsStream,一切都运行良好!非常感谢 user2933977 的帮助。
旁注:是的,是的,我知道这是重复的,但我认为你如何表达问题并与响应者互动无论如何都会有很大帮助。放轻松,我已经开始工作了。
您没有显示足够的代码,但要使用 getResource(),您的文件需要与 .class 文件位于同一目录中。例如,您可能有如下所示的内容:
Desktop -->
workspace -->
QuizProgram -->
bin -->
QuizProgram -->
YourClass.class
src -->
QuizProgram -->
YourClass.java
Questions.txt
right.png
我在这里有点猜测,但这是 Eclipse 中的默认设置 "Java Project"。因此,将您的 Questions.txt 移动到与 .java 文件相同的目录,Eclipse 会为您将其移动到 classes 目录:
Desktop -->
workspace -->
QuizProgram -->
bin -->
QuizProgram -->
YourClass.class
Questions.txt <--- Eclipse moves this for you
src -->
QuizProgram -->
YourClass.java
Questions.txt
right.png
并且您将能够使用您编写的 getResource() 方法。
话虽如此,您最终会得到一个可以为您完成大部分工作的构建系统,但这应该能让您入门。
快速免责声明:我是 java 的新手,我知道这个问题已在其他线程中得到解答,但我无法理解那里的答案,所以我真的希望得到一个非常 simple/understandable请解释。
无论如何,我的问题是我正在使用 Eclipse 制作一个使用文本文件和图片的程序,当它通过 Eclipse 运行时,如果我尝试将它导出到 运行nable jar,我不能访问我的资源了。当前,当我从 Eclipse 中 运行 东西时,我的目录结构是:
Desktop -->
workspace -->
QuizProgram -->
bin
src
Questions.txt
right.png
我通过以下方式访问我的图像和文本文件:
BufferedReader br = new BufferedReader(new FileReader("Questions.txt"));
BufferedImage right = ImageIO.read(new File("Right.png"));
如果有人愿意,我将逐步解释将我的 files/change 我的代码移至何处,我将不胜感激。我浏览了许多其他主题,Classpath/ClassLoader 真的让我感到困惑。我已经尝试了一些
this.getClass().getResource("File.txt");
东西也有,但似乎没有任何效果。请帮忙,我有一个完成的程序,最后一件事真的很令人沮丧,谢谢!
编辑 1:所以我尝试了 user2933977 的建议,并将 getResource 更改为 getResourceAsStream,一切都运行良好!非常感谢 user2933977 的帮助。
旁注:是的,是的,我知道这是重复的,但我认为你如何表达问题并与响应者互动无论如何都会有很大帮助。放轻松,我已经开始工作了。
您没有显示足够的代码,但要使用 getResource(),您的文件需要与 .class 文件位于同一目录中。例如,您可能有如下所示的内容:
Desktop -->
workspace -->
QuizProgram -->
bin -->
QuizProgram -->
YourClass.class
src -->
QuizProgram -->
YourClass.java
Questions.txt
right.png
我在这里有点猜测,但这是 Eclipse 中的默认设置 "Java Project"。因此,将您的 Questions.txt 移动到与 .java 文件相同的目录,Eclipse 会为您将其移动到 classes 目录:
Desktop -->
workspace -->
QuizProgram -->
bin -->
QuizProgram -->
YourClass.class
Questions.txt <--- Eclipse moves this for you
src -->
QuizProgram -->
YourClass.java
Questions.txt
right.png
并且您将能够使用您编写的 getResource() 方法。
话虽如此,您最终会得到一个可以为您完成大部分工作的构建系统,但这应该能让您入门。