5

我正在尝试从打包在 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 文件。我认为这不是导致问题的原因吗?

4

3 回答 3

0

以 getClass().getResourceAsStream("/file1") 的方式尝试。

于 2013-04-12T02:04:39.370 回答
0

使用文件分隔符时,不要对它们进行硬编码!改用 java.io.File.separator: http: //docs.oracle.com/javase/7/docs/api/java/io/File.html#separator

于 2014-07-14T17:11:38.990 回答
0

跳过类加载器部分。只需 getClass().getResource....

于 2013-04-12T00:53:26.767 回答