我使用此代码片段获取一个文件作为输入流。文件 version.txt 打包在我的应用程序的 jar 中,位于最上层的文件夹中。
InputStream resource = getClass().getClassLoader().getResourceAsStream("version.txt");
这几乎一直有效。但是对于一个用户来说,它正在获取另一个不在我的 jar 中的 version.txt。我如何确保这会加载我的 jar 中的特定 version.txt 文件?
最佳答案
当您说“最上层文件夹”时,您指的是默认包吗?如果是这种情况,您必须确保您的 JAR 在类路径中早于提供其他 version.txt
文件的任何内容,因为 Java 会沿着类路径搜索,直到找到第一个匹配项。
由于很难确保您的 JAR 始终位于第一位,因此您确实应该将 version.txt
文件放在非默认包中,例如:
com.yourcompany.yourproject.version
然后您需要修改代码以找到它:
Stream resource = getClass().getClassLoader().getResourceAsStream("com/yourcompany/yourproject/version/version.txt");
使用默认包是一种反模式。
关于java - 类加载器加载错误的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1497805/