最近我遇到了一个 Java 问题。我尝试了在网上找到的一些方法,但没有成功,所以我需要帮助。
我在 Eclipse 中有一个 Java 项目。我的主要课程是在src/programCode/UI_Main2.java
。在那里面.java
我尝试访问一个文件src/files/File.file
这就是事情变得奇怪的时候。
如果我使用/src/files/File.file
它给了我NoSuchFileException
.
如果我使用src/files/File.file
它在 Eclipse 中工作,但是当我将其编译为可执行文件 .jar 时,它给了我NoSuchFileException
.
如果我使用/files/File.file
它给了我NoSuchFileException
.
如果我使用files/File.file
它给了我NoSuchFileException
.
如果我使用files/File.file
它给了我NoSuchFileException
.
如果我使用this.getClass().getResource("/files/File.file").getPath().substring(1)
(没有子字符串它给我无效的字符)它给我NoSuchFileException
(但它显示了绝对路径并且文件存在于那里!)
如果我使用this.getClass().getResource("files/File.file").getPath()
它给了我NullPointerException
并且程序崩溃了。
如果我使用this.getClass().getResource("src/files/File.file").getPath()
它给了我NullPointerException
并且程序崩溃了。
如果我使用this.getClass().getResource("/src/files/File.file").getPath()
它给了我NullPointerException
并且程序崩溃了。
所以,我不知道该怎么办。src/files/File.file
是唯一有效的,但在编译为可执行 jar 时却无效。所以请帮助我,我还没有找到任何解决方案。
谢谢!
查找文件取决于两件事:
- 无论您使用绝对路径还是相对路径
- 你的工作目录在哪里
在类 Unix 系统下,当你使用类似路径时/dir1/dir2/file
您使用绝对路径,因此您的工作目录并不重要,但您必须在该路径下有一个文件。
在你的情况下,你尝试使用相对路径,所以你不应该使用/
一开始。
这个案例对你的问题至关重要:
"If I use src/files/File.file it works in Eclipse but when I compile it to a executable .jar it gives me NoSuchFileException."
默认情况下,Eclipse 使用以下父目录作为工作目录src
(通常是您的项目的目录”,因此从那里开始,您确实在该路径下有一个文件。
当你开始一个.jar
你的工作目录在其他地方。把你的.jar
到父目录src
它应该有效。
现在,我建议您将文件的位置更改为除src
(叫它Resurces
或其他东西)并将其与.jar
.
另外,这里有一个关于工作目录和的有趣讨论.jar
files:
运行 Jar 时的当前工作目录 https://stackoverflow.com/questions/6433469/current-working-directory-when-running-a-jar
如果您想分发单个.jar
这是一个很好的包装说明:
http://www.cefns.nau.edu/~edo/Classes/CS477_WWW/Docs/pack_resources_in_jar.html http://www.cefns.nau.edu/~edo/Classes/CS477_WWW/Docs/pack_resources_in_jar.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)