Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误:`Error-java.lang.IllegalArgumentException:URI在从类路径获取文件时不是分层的_Java_File_Classpath - Fatal编程技术网

错误:`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());