【发布时间】:2015-11-28 12:55:46
【问题描述】:
快速免责声明:我对 java 很陌生,我知道这个问题已经在其他线程中得到了回答,但我无法理解那里的答案,所以我真的希望得到一个非常简单/易于理解的解释。
无论如何,我的问题是我正在使用 Eclipse 制作一个使用文本文件和图片的程序,并且当它通过 Eclipse 运行时,如果我尝试将它导出到可运行的 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"));
如果有人可以请我逐步解释将文件移动到何处/更改我的代码,我将不胜感激。我浏览了许多其他线程,Classpath/ClassLoader 真的让我很困惑。我已经尝试了一些
this.getClass().getResource("File.txt");
也有东西,但似乎没有任何效果。请帮忙,我有一个完成的程序,最后这件事真的很令人沮丧,谢谢!
编辑 1:所以我尝试了 user2933977 的建议并将 getResource 更改为 getResourceAsStream ,一切都运行良好!非常感谢 user2933977 的帮助。
旁注:是的,是的,我知道这是重复的,但我认为无论如何你如何表达问题并与响应者互动都会有很大帮助。放轻松,我已经开始工作了。
【问题讨论】:
-
您可以保持文件相对于 jar(在同一文件夹中)并像往常一样使用标记文件名的字符串参数访问文件
-
我真的很想把所有东西都放在罐子里,你有什么建议吗?还是谢谢!
-
如果您希望它包含在 jar 中,您必须在系统上存储某种类型的 Config 变量。看this post
-
无意冒犯,但你确定吗?因为我已经设法将我的 .txt 文件打包到我的 jar 中并且访问它们是我真正的问题。也许我错了,但我认为没有配置文件是可能的,对吧?
-
你肯定可以打包它们,但是访问 jar 中的文件是真正的问题。相对路径将始终更改而不对类加载器进行任何修改
标签: java jar embedded-resource executable-jar