JAVA读取了本地TXT,但是导出JAR并运行时提示系统找不到指定路径??求助

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA读取了本地TXT,但是导出JAR并运行时提示系统找不到指定路径??求助相关的知识,希望对你有一定的参考价值。

在eclipse里直接运行可以,但一旦生成JAR文件就不行了,路径和文件都对了。是不是相对路径不对?其中的代码是这样的:
File file = new File(“0.txt”);
FileInputStream fis = new FileInputStream(file);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fis));
是不是不应该用这钟路径方式表示啊??
那应该怎么表示了?

在编写代码时使用的是绝对路径来访问的这个文件,然而这个文件是在jar包中的,jar包中有自己的一套Url编址:jar:<url>!/entry)。所以导致运行时无法访问到文件。
解决办法就是在构造File对象时使用url来构造,而文件的url获取使用ClassLoader.
URL fileURL=this.getClass().getResource("0.txt");
File file = new File(fileURL);
FileInputStream fis = new FileInputStream(file);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fis));
参考技术A new File("0.txt")代表相对路径,也就是读取与你当前运行的JAR文件在同一个文件夹内的0.txt文件。
你可以尝试把0.txt文件复制到JAR同文件夹下,或者使用绝对路径,如“c:\folder\0.txt”。追问

那我要把JAR包发布或者移植到其它机子上怎么办?绝对路径不是会出错吗?

参考技术B 你都生成了JAR文件了,那就意味着相对路径就是变了

楼主建议你用绝对路径, 例如 "C:\Users\haha\Desktop\OBJC\0.txt"
这样就不会有错了。。。

有些编译器不同就会出错
出错就用 "C:\\Users\\haha\\Desktop\\OBJC\\0.txt"追问

那我要把JAR包发布或者移植到其它机子上怎么办?绝对路径不是会出错吗?

追答

那肯定出错了。。。。那你用相对路径吧,,,把文件加在工程下面。。。然后再生成jar

像这样加在里面:

追问

我这样用过,也用getClass().getResource等方法取得文件路径过,可是生成JAR文件时提示有错,双击运行不了,在CMD界面运行提示文件找不到异常,求大神帮助!

本回答被提问者和网友采纳
参考技术C 写成 D:/a/b/0.txt

或者 D:\\a\\b\\0.txt,追问

那我要把JAR包发布或者移植到其它机子上怎么办?绝对路径不是会出错吗?

JAVA-通过接口读取本地jar包,并调用其中实现了接口的类中的方法



URLClassLoader classLoader = new URLClassLoader(new URL[]{new URL("jar 本地路径,例如:file:D:/project/inputsplit-1.0-SNAPSHOT.jar")}, Thread.currentThread().getContextClassLoader()); Reflections reflections = new Reflections("your interface package", classLoader); Set<Class<? extends "your interface">> subTypesOf = reflections.getSubTypesOf("your interface"); //从继承中获取任意实现 subTypesOf.stream().findAny().ifPresent(clazz -> { try { "your interface" interface = clazz.newInstance(); } catch (Exception e) { throw new RuntimeException(); } });

  



以上是关于JAVA读取了本地TXT,但是导出JAR并运行时提示系统找不到指定路径??求助的主要内容,如果未能解决你的问题,请参考以下文章

Maven怎么处理引用的jar版本冲突

Maven怎么处理引用的jar版本冲突

JAVA-通过接口读取本地jar包,并调用其中实现了接口的类中的方法

java读取excel文件,按照指定的日期条件读数据,然后导出txt存储并以其日期命令

delphi stringgrid里的数据到本地txt文件的读取和写入的代码

导出含有图片的Java项目,图片不显示