错误:`Error-java.lang.IllegalArgumentException:URI在从类路径获取文件时不是分层的
我有一个包含在类路径目录中的文件。它看起来是这样的错误:`Error-java.lang.IllegalArgumentException:URI在从类路径获取文件时不是分层的,java,file,classpath,Java,File,Classpath,我有一个包含在类路径目录中的文件。它看起来是这样的pl/shenlon/io/gui/appData/file.txt。现在,当我尝试将其转换为文件并使用以下代码读取时: File cityNamesFile = new File(ClassLoader.getSystemResource("pl/shenlon/io/gui/appData/list.txt").toURI()); Scanner cns = new Scanner(cityNamesFile); 我得到以下信息:- err
pl/shenlon/io/gui/appData/file.txt
。现在,当我尝试将其转换为文件并使用以下代码读取时:
File cityNamesFile = new File(ClassLoader.getSystemResource("pl/shenlon/io/gui/appData/list.txt").toURI());
Scanner cns = new Scanner(cityNamesFile);
我得到以下信息:-
error-java.lang.IllegalArgumentException:URI不是分层的。
如何解决此问题?如果调用类本身与文本文件位于同一个包中,请使用:
InputStream is = getClass().getResourceAsStream("list.txt");
Scanner cns = new Scanner(is);
替换
File cityNamesFile = new File(ClassLoader.getSystemResource("pl/shenlon/io/gui/appData/list.txt").toURI());
与
您是否尝试过使用文件cityNamesFile=new File(“classpath:”)?好的,谢谢。但是现在我想更改发送到UTF8的数据的编码。我怎么能这么做?好的,完成了。Scanner有另一个构造函数,它接受InputStream和要使用的字符集名称(作为字符串):-所以只需这样做:Scanner cns=new Scanner(即“UTF-8”);我宁愿使用ApacheCommons:
FileUtils.readFileToString(..)
或FileUtils.readLines(..)
只在Eclipse中对我有效,而不是在从终端运行的jar中从命令行使用什么类路径?Eclipse会自动为您处理。我尝试过不设置显式类路径,我只是从终端模拟器运行java-jar xxx.jar
,xxx.jar是Eclipse导出的jar。那么您尝试加载的文件在jar文件中指定的路径下?您看到的错误类型是什么?
File cityNamesFile = new File(Thread.currentThread().getContextClassLoader().getResource("pl/shenlon/io/gui/appData/list.txt").getFile());