线程“main”中的异常java.lang.IllegalArgumentException:URI不是hierar chical

时间:2015-09-13 08:06:22

标签: java exception illegalargumentexception

我见过类似的问题,但不确定如何修复它。我已经尝试将其更改为输入流

var

上面,字符串只包含文件的名称(例如egample.txt)例如我正在尝试阅读egample.txt。

它从日食开始。请建议我如何解决它。我已经通过其他答案,但不确定。

folder structure

1 个答案:

答案 0 :(得分:0)

问题出在这里:

    new File(metaInf.toURI())

如果查看File(URI)构造函数的javadoc,它会说:

  

通过将给定的file: URI转换为抽象路径名来创建新的File实例。

问题是getResources()枚举器提供的网址/ URI通常是 而不是file:网址。如果您的代码是从JAR文件执行的,或者类路径上有其他JAR文件,那么您可以获得jar:个URL。 File构造函数无法处理它们...因为URL没有在主机文件系统中用路径名命名。

在某些情况下,这将是它的结束。但是,根据您的情况,您实际上不需要使用File。相反,你应该能够这样:

    BufferedReader br = new BufferedReader(
           new InputStreamReader(metaInf.openStream()));

这在Eclipse中运行的原因是,在这种情况下,URL将是file:个URL。可以从各自的Eclipse工作区目录直接访问资源。

相关问题