我要做什么
我使用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);