如何实例化org.eclipse.jdt.core.ICompilationUnit或org.eclipse.core.internal.resources.Workspace?

时间:2019-05-07 16:51:09

标签: java eclipse eclipse-jdt

我要做什么

我使用Eclipse JDT API创建一些Java项目的AST并对其进行操作,但是,我的软件不是Eclipse插件,但应该是独立的桌面应用程序。

现在,为了使用API​​的特定方法,我需要一个org.eclipse.jdt.core.ICompilationUnit实例。 据我了解,此代码段可以做到这一点:

IWorkspace workspace = ResourcesPlugin.getWorkspace(); 
IPath path = Path.fromOSString(stringPath);
IFile file = workspace.getRoot().getFileForLocation(path);
ICompilationUnit compilationUnit =(ICompilationUnit)JavaCore.create(file);

问题是ResourcesPlugin.getWorkspace()不起作用,我猜测,因为我的应用程序不是Eclipse插件。引发的特定异常如下:

Caused by: java.lang.IllegalStateException: Workspace is closed.
    at org.eclipse.core.resources.ResourcesPlugin.getWorkspace(ResourcesPlugin.java:432)

我需要的

我要实现的解决方案涉及(临时地)将其中包含源代码的文件夹放置在Eclipse Workspace中。

因此,我需要一种方法来获取org.eclipse.core.internal.resources.Workspace的实例,该实例给出了包含源代码的文件夹的路径,基本上是这样:

String path = "./folder/with/source/code";
Workspace workspace = pathToWorkspace(path);

顺便说一句,如果有一种方法可以获取ICompilationUnit的实例而不需要工作空间,那也可以解决我的问题。

我尝试过的事情

我试图做的是创建一个ResourcesPlugin实例,并使其开始时希望通过BundleContext我能够指定路径。不幸的是,org.osgi.framework.BundleContext是一个由消费者指定的接口,not supposed to be implemented,我无法找到实现此接口的具体类。

ResourcesPlugin plugin = new ResourcesPlugin();
plugin.start(boundleContext);

0 个答案:

没有答案