我正在尝试加载一个名称在属性文件中指定的类。这是相同的代码。
try {
Properties properties = new Properties();
InputStream in = MyAbstractFactory.class.getResourceAsStream("/some.properties");
properties.load(in);
String impl = properties.getProperty("key");
MyAbstractFactory factories = (MyAbstractFactory) Class.forName( impl ).newInstance();
return factories;
} catch (Exception e) {
return new DefaultFactoriesImpl();
}
此代码是 jar 文件的一部分。属性文件就在 jar 之外。它无法加载属性文件,而是加载 DefaultFactoriesImpl。我知道当 MyAbstractFactory.class.getResourceAsStream 无法在类路径中找到资源时会发生这种情况,但这里似乎并非如此。
目录结构:-
- com
- myjar.jar
- 一些.properties
我正在执行的命令是“java -jar myjar.jar”
关于为什么会发生这种情况的任何反馈。这可能与类加载器有关吗?我想补充一点,当我在 Eclipse 中运行此代码时,它似乎可以很好地获取 some.properties。