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));
是不是不应该用这钟路径方式表示啊??
那应该怎么表示了?
解决办法就是在构造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并运行时提示系统找不到指定路径??求助的主要内容,如果未能解决你的问题,请参考以下文章
JAVA-通过接口读取本地jar包,并调用其中实现了接口的类中的方法
java读取excel文件,按照指定的日期条件读数据,然后导出txt存储并以其日期命令