在OSGi应用程序中获取Eclipse项目信息

时间:2012-02-22 08:47:27

标签: java eclipse osgi

我正在开发一个项目,该项目使用Eclipse AST检查Eclipse Java项目并获取源文件的一些信息。现在它是一个Eclipse插件,但是我们需要让它独立于Eclipse,我们只使用Eclipse的AST库。

我已经尝试复制所需的JAR并将项目作为普通的Java应用程序运行(不是Eclipse插件,不依赖于Eclipse)但后来我开始遇到一些错误,因为当我在Eclipse之外运行应用程序时,AST可以从Eclipse获取所需信息(项目数据)并在某些情况下返回null。例如,当我访问方法调用(MethodInvocationNode类)时,我需要知道哪个类的方法是这样的,但我不能因为我解释的AST错误(MethodInvocationNode.resolveMethodBinding()在这种情况下返回null )。

我想我需要得到一个IProject,在Eclipse插件中我从IWorkspaceResourcesPlugin.getWorkspace())得到它,我认为它在所有Eclipse插件中都可用。

现在,我想如果我可以制作一个OSGi应用程序,也许我可以以某种方式得到IProject,但我不知道我该怎么做。文档和教程没有多大帮助。我很可能错过了关于Eclipse项目和/或OSGi应用程序的一些基本要点:)。

简而言之,我如何在OSGi应用程序中获取IProject数据?

1 个答案:

答案 0 :(得分:1)

首先,每个Eclipse应用程序都是一个OSGi应用程序,因此在纯OSGi环境或Eclipse中执行操作没有区别。

其次,“Workspace”是一个特定于Eclipse的构造,因此使您的应用程序与Eclipse“独立”完全没有意义,项目的内容,尤其是Java项目是特定于eclipse的(因此您还必须解析{来自Eclipse的API的{1}}文件,用于了解必须编译哪些资源,解析.classpath个文件等。)

工作空间机制是包.project的一部分。您需要在OSGi应用程序中包含它。就像已经提到的那样,您可以像在Eclipse环境中一样以相同的方式访问所有内容。