我正在尝试从一个打包在JAR中的文件以及读取它的类中读取。为此,我使用以下内容:
getClass().getClassLoader().getResourceAsStream(file)
当我在OSX上创建并运行JAR文件时,这可以正常工作,但是如果我在Windows上创建并运行JAR文件,则上面的行返回null。
我在这里遗漏了什么吗?如果我在OSX上创建JAR并在Windows上运行它可以正常工作。只有在Windows上创建JAR时才会出现此问题。
编辑:值得一提的是JAR文件中没有文件夹层次结构。一切都存储在一个级别,因此读取文件的类和文件本身都在同一目录中。另外,这就是我在OSX和Windows上创建JAR文件的方式:
jar -cmf manifest.mf run.jar *.class file1 file2
编辑2:我尝试加载的文件是java .properties文件。我认为这不是造成这个问题的原因吗?
答案 0 :(得分:0)
跳过类加载器部分。只是getClass()。getResource ....
答案 1 :(得分:0)
以这种方式试试getClass()。getResourceAsStream(" / file1")。
答案 2 :(得分:-1)
使用文件分隔符时,不要硬编码! 请改用java.io.File.separator:http://docs.oracle.com/javase/7/docs/api/java/io/File.html#separator