加载文件在一个jar子里

我需要将一个configuration文件打包在一个jar文件中。 configuration文件在jar文件的根目录下。 不过,我得到了以下错误:

引起:java.lang.IllegalArgumentException:URI在java.io.File中不是分层的(Unknown Source)

File url = new File(MyClass.class.getClassLoader().getResource("my.conf").toURI()); 

你应该使用getResourceAsStream()来代替。 如果文件embedded到JAR中,那么URI很可能是bundle:// URI

 InputStream is = this.getClass().getResourceAsStream("my.conf"); 

你为什么需要一个文件? 如果你需要阅读configuration使用

 Class.getResourceAsStream("/" + "my.conf"); 

这将只需要在你的包的根目录下的一个文件夹(与jar的根目录相同)

该文件应该与MyClass在同一个包中。 我刚刚意识到你正在创build一个File对象。 而是尝试使用getResourceAsStream()。 如果要从类path资源中读取内容,这是正确的方法。 这里是例子 。