2011-03-10 93 views
2

我在eclipse中有2个项目A和B. B依赖于A.在项目A中是文本文件"file.txt"。该文件可以通过例如getClass().getResourceAsStream(...) ...加载到项目B中,因为该文件的位置在classpath。我想在项目B中提供相同的文件名,并且仅在项目B中存在文件时才执行某些操作。如果项目B中没有文件,则在使用getClass().getResourceAsStream(...)加载期间不应找到任何文件。目前该文件将始终找到。从“当前项目”的类路径位置读取文件

谢谢你的帮助。

亲切的问候 塞巴斯蒂安


我需要提供有关该问题的一点点信息。抱歉。

有一个项目C是核心。在项目C中有以下几类:

  1. 检查是否存在file.txt。这是仅检查文件名的基本代码。没有包名称。我不想改变它。
  2. 如果是,那么做点什么。
  3. 如果现在就做别的事情。

A取决于C和B也取决于C.如果将执行A,那么C的基本代码将尝试找到file.txt

如果B将被执行,那么基本代码也将尝试找到file.txt。如果B项目中没有文件,那么它会找到,因为它在A中。我不想要它。

非常感谢。

回答

0

将项目B中的文件添加到不同的类路径位置中,首先尝试项目B中的位置,然后检查项目A中的文件。说明位置是项目B中的com.myPackage.file1和com.myPackage。项目A中的projA.file1。

+0

谢谢您的回答。这对我来说并不完全是解决方案。请看看我编辑了我的问题。 – sebastian 2011-03-10 09:30:40

+0

您可以尝试调用getClass()。getClassLoader()。getResources(),它将返回所有找到的资源。最终你可以玩类加载器,通过ClassLoader的getParent()方法遍历所有的类加载器层次结构,使得该方法递归。 – 2011-03-10 10:42:25

+0

谢谢你的回答。我调用'getClass()。getClassLoader()。getResources(“file.txt”)''。 然后我遍历该文件的类路径中的所有路径,并检查该文件来自哪个项目。 – sebastian 2011-03-10 11:33:02