我在Eclipse中有两个项目,一个具有'main'功能的类。 我们将这个项目称为'A'。 在这个'main'函数中,它在另一个项目中实例化一个类。我们分别称这个项目和类,'B'和'C'。在类'C'中,它尝试使用'System.property(“user.dir”)“从项目'B'加载RESOURCEFILE。
当我尝试从项目'A'运行此应用程序时,它无法打开项目B中的RESOURCEFILE,因为工作目录位于项目'A'中。但我需要将文件放在项目'B'中。
我不知道解决这个问题的最佳方法是什么。我在运行此应用程序时是否需要传递项目B的信息?我完全失去了..
我会等待别人的帮助!
GIM
答案 0 :(得分:1)
将第二个项目添加到第一个项目的构建路径中作为项目依赖项。
答案 1 :(得分:1)
听起来你还没有想过要如何部署这些项目的问题。它们是独立的命令行应用程序吗?他们是分开的网络应用程序吗?在他们的更大的应用程序/ Web应用程序的组件?
如果这些项目是您尝试访问(有效)部分源代码库的组件和资源,那么访问它们的最佳方式是使用Class.getResource(...)
或Class.getResourceAsStream(...)
。对于已部署的版本,您只需确保B
的JAR文件包含资源,并且位于运行时类路径上。
如果这些项目实际上是截然不同的,那么您的问题就更棘手了,最佳解决方案取决于它们的部署和配置方式。
(getResource(...)
方法为您提供了一个网址。如果您确实想要阅读它,请使用getResourceAsStream(...)
。)
关于getResourceAsStream
的参数:参数是在类容器的命名空间中解析的路径;例如您的classes
目录或(部署时)您的JAR文件。您可以选择相对路径或绝对路径。将相对于容器的根解析绝对路径。相对路径将相对于类的父路径进行解析(假设您使用的是Class.getResourceAsStream
。
AFAIK,Eclipse会自动将源树中的资源复制到项目的classes目录中,但您可能需要检查它。