我需要在jar中打包配置文件。配置文件位于jar文件的根目录下。 但是我收到了以下错误:
引起:java.lang.IllegalArgumentException:URI不是分层的 在java.io.File。(未知来源)
File url = new File(MyClass.class.getClassLoader().getResource("my.conf").toURI());
答案 0 :(得分:29)
您应该使用getResourceAsStream()代替。如果文件嵌入在JAR中,则URI很可能是bundle:// URI
InputStream is = this.getClass().getResourceAsStream("my.conf");
答案 1 :(得分:7)
为什么需要文件?如果您需要阅读配置使用
Class.getResourceAsStream("/" + "my.conf");
这只需要是包含根目录的一个文件夹中的文件(与jar的根目录相同)
答案 2 :(得分:4)
该文件应与MyClass位于同一个包中。我刚刚意识到你正在创建一个File对象。而是尝试使用getResourceAsStream()。如果要从类路径资源中读取内容,这是正确的方法。这里is the example。