Eclipse IDE如何解析文件/资源​​位置?

时间:2015-07-11 17:48:20

标签: java eclipse file file-io resources

我的问题用这些来表达

  

两张图片。

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

  来自src文件夹的

文件,如红色箭头所示

Eclipse Image 1

  

在第二张图片中,

显示 Log4j PropertyConfigurator.configure()方法从

加载文件
  

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

Eclipse Image 2

在这两个项目中,只有这个设置有效,没有其他设置可以正常工作。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

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

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

  1. Hibernate将配置文件作为资源加载,在类路径中查找具有该路径的文件,这就是src中的原因。
  2. sourcode of Hibernate's Configuration#configure(String)

    1. Log4j使用String作为路径来打开FileInputStream。由于您提供了相对路径,因此它会查找相对于项目根目录的文件
    2. sourcecode of log4j PropetyConfigruator#configure(String)

答案 1 :(得分:1)

加载hibernate.cfg.xml

configuration.configure(hibernate.cfg.xml)表示您的hibernate配置文件“hibernate.cfg.xml”位于项目类路径的根目录。即使您未在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");