Java getResourceAsStream无法加载资源 [英] Java getResourceAsStream cannot load resource

查看:19
本文介绍了Java getResourceAsStream无法加载资源的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试加载一个其名称在属性文件中指定的类。下面是相同的代码。

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
  • 某些属性

我执行的命令是"Java-jar myjar.jar"

关于为什么会发生这种情况的任何反馈。这会不会与ClasLoader有关?我想补充的是,当我在eclipse中运行这段代码时,它似乎可以很好地获取一些属性。

推荐答案

从您传递给getResourceAsStream()的参数中删除前导斜杠。

在执行JAR时,将JAR外部的文件夹放入CLASSPATH中。我不知道清单CLASSPATH是否会覆盖您可能使用-cp传递的清单。使用它;其中一个会起作用。

它找不到您的.properties文件,因为它不在JVM CLASSPATH中。当您正确操作时,JVM会找到它。

这篇关于Java getResourceAsStream无法加载资源的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆