Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在OSGi应用程序中获取Eclipse项目信息_Java_Eclipse_Osgi - Fatal编程技术网

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

Java 在OSGi应用程序中获取Eclipse项目信息,java,eclipse,osgi,Java,Eclipse,Osgi,我正在从事一个项目,该项目使用EclipseAST检查EclipseJava项目并获取一些源文件的信息。现在它是一个Eclipse插件,但我们需要使它独立于Eclipse,我们只使用Eclipse的AST库 我尝试复制所需的JAR,并将项目作为普通Java应用程序运行(不是Eclipse插件,不依赖于Eclipse),但随后我开始出现一些错误,因为当我在Eclipse之外运行应用程序时,AST无法从Eclipse获取所需的信息(项目数据),并且在某些情况下返回null。例如,当我访问一个方法调用

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

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

我想我需要一个
I项目
,在Eclipse插件中,我从
I工作空间
ResourcesPlugin.getWorkspace()
)获得它,我认为它在所有Eclipse插件中都可用

现在,我想如果我能用它制作一个OSGi应用程序,也许我能以某种方式得到那个
I项目
,但我不知道我该怎么做。文档和教程帮不了什么忙。我很可能遗漏了关于Eclipse项目和/或OSGi应用程序的一些基本要点:)


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

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

其次,“工作区”是一个特定于Eclipse的构造,因此使应用程序与Eclipse“独立”毫无意义,项目的内容,尤其是Java项目是特定于Eclipse的(因此,您还必须使用Eclipse的API解析
.classpath
文件,以了解必须编译哪些资源,解析
.project
文件等)


工作区机制是捆绑包
org.eclipse.core.resources
的一部分。您需要将其包含在OSGi应用程序中。如前所述,您可以像在eclipse环境中一样以相同的方式访问所有内容。

谢谢您的回答。我的项目中已经有
org.eclipse.core.resources
JAR,但我无法使用它t工作空间或项目数据(
IWorkspace
IProject
),因为在Eclipse插件中,这些已经创建并准备好与
org.Eclipse.core.resources.ResourcesPlugin.getWorkspace()一起使用
。所以我不能像在Eclipse环境中那样访问这些东西。你知道我该怎么做吗?你必须在osgi环境中使用这个捆绑包,不可能将jar放入你的类路径,你必须启动osgi,安装并启动资源捆绑包。实际上,你正在创建一个无头RCP(Eclipse/equinox)应用程序。最简单的方法是创建一个新的插件项目,对RCP说“是”,对贡献UI说“否”,然后在下一个窗格中选择一个无头RCP应用程序。从那里你可以添加捆绑包(如org.eclipse.core.resources和dependencies),直到你可以正确启动你的应用程序。没有UI,你必须使用-data启动