我使用NetBeans IDE,并且在src / myapp文件夹中保存了一个.txt文件。如果我从IDE运行,这可以识别我的
File file=new File("src/myapp/mytext.txt");
但是,如果我构建jar文件并双击它或从命令行启动它,则会出现此错误:
java.io.FileNotFoundException: src\myapp\mytext.txt
我可以插入绝对路径,但是如何根据项目在计算机中的位置独立运行jar?
答案 0 :(得分:3)
您可以通过以下方式独立获取文件路径:
ClassLoader classLoader = getClass().getClassLoader();
String path = classLoader.getResource("mytext.txt").toString();
答案 1 :(得分:0)
Java希望找到相对于您的工作目录的文件。因此,通过在src/myapp/mytext.txt
中对文件进行硬编码,您可以期望应用程序的用户拥有
文件在相同的文件夹结构下。
如果您希望文件与jar文件处于同一级别,则可以只使用./mytext.txt
。不要将mytext.txt
放在项目的src
下。那是您要在jar文件中进行编译和/或捆绑的源代码。在NetBeans中,将其移动到/src
文件夹之外,这样,当您从IDE中运行程序或从Jar文件中外部运行程序时,您会发现该文件处于同一级别。
如果您希望用户能够自己指定文件的位置,则还可以读取命令行参数(public static void main(String[] args)
的参数)。
答案 2 :(得分:0)
没有这样的问题
File file=new File("./src/myapp/mytext.txt");