【问题标题】:How does Eclipse IDE resolve File/Resource location?Eclipse IDE 如何解析文件/资源​​位置?
【发布时间】:2015-07-11 17:48:20
【问题描述】:

我的问题是用这些来表达的

两张图片。

在第一个中,configuration.configure()方法的hibernate加载

src 文件夹中的文件,如红色箭头所示

在第二张图片中,

显示Log4jPropertyConfigurator.configure()方法从

加载文件

再次用红色箭头表示的项目根文件夹

在这两个项目中,只有这个设置有效,没有其他设置有效。

感谢您的帮助。

【问题讨论】:

  • Eclipse IDE 解析文件/资源​​位置?真的!!?

标签: java eclipse file file-io resources


【解决方案1】:

Eclipse 没有做任何事情,它都是 JVM。如果您使用命令行或其他 IDE,结果将是相同的。

在您的 2 个示例中,不同的程序加载配置不同。

  1. Hibernate 将配置文件作为资源加载,它会在您的类路径中查找具有该路径的文件,这就是为什么它可以在 src 中。

sourcode of Hibernate's Configuration#configure(String)

  1. Lo​​g4j 使用字符串作为打开FileInputStream 的路径。由于您提供了相对路径,因此它会查找相对于项目根目录的文件

sourcecode of log4j PropetyConfigruator#configure(String)

【讨论】:

  • 谢谢先生的回答
【解决方案2】:

加载 hibernate.cfg.xml

configuration.configure(hibernate.cfg.xml) 表示你的hibernate配置文件“hibernate.cfg.xml”在你的项目classpath的根目录下。即使你没有在configure()方法中传递配置文件名,它也可以工作,但是在这种情况下,名称应该是 hibernate.cfg.xml。

如果你想把这个配置文件放到不同的目录,那么你需要像下面这样

new Configuration().configure("/com/config/hibernate.cfg.xml")

加载 log4j.properties

加载 log4j.properties 也以类似的方式工作。

如果您想将 log4j.properties 放入 com-->config 源文件夹,您可以执行以下操作

PropertyConfigurator.configure("classpath:com/config/log4j.properties"); 

【讨论】:

  • 感谢先生的回答
猜你喜欢
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
  • 2013-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多