2012-05-14 137 views
1

我不喜欢在resources/mypackage/.../somepackage/resourcefile.properties中拥有我的属性文件,宁愿让它们在resources/resourcefile.properties。这个现象的原因可能不:访问Java中基础包的资源?

  1. 被迫写MyApplication.class.getResourceAsStream("../../../../../../../../resources/resourcefile.properties")
  2. 它使用SomeClass.getClassLoader().getResourceAsStream("resourcefile.properties")时在Tomcat中不工作?

回答

5

放在一个斜线指定根包:

SomeClass.getClassLoader().getResourceAsStream("/resourcefile.properties") 
+0

你肯定的作品?我认为每个虚拟机只有一个类加载器,因此Tomcat没有以root用户为基础的软件包目录,而是有一些不同的目录。 –

+0

'Class.getResourceAsStream()'从类路径加载资源,而不是文件系统。虽然分层类加载器可能强制实现可见性约束(即,您可以从您自己的软件包或任何父母中查看资源,但是不能从兄弟软件包中查看资源),但类路径上的所有软件包名称都共享同一个根目录。 – Barend