我正在尝试将第三部分Eclipse的插件复制,
但是我需要创建一个IProject实例来传递JavaCore.create(instance)
以获取IJavaProject的实例。
这个应用程序不会有工作空间,并且会更好地依赖eclipse的库,尽可能少。
所以我不能用:
ResourcesPlugin.getWorkspace().getRoot().getProject(...);
当我尝试启动程序时,我收到了此错误报告:
Exception in thread "main" java.lang.IllegalStateException: Workspace is closed.
at org.eclipse.core.resources.ResourcesPlugin.getWorkspace(ResourcesPlugin.java:367)
at gr.uom.java.jdeodorant.helpers.JavaProjectHelper.createJavaProject(JavaProjectHelper.java:55)
at gr.uom.java.jdeodorant.refactoring.actions.Index.initializeJavaProject(Index.java:28)
at gr.uom.java.jdeodorant.refactoring.actions.Index.main(Index.java:53)
那么有没有办法在Eclipse之外创建这个实例,只是传递我需要的项目路径? 一些想法?
答案 0 :(得分:3)
答案简短:不。
工作空间需要启动OSGi框架,并设置osgi.instance.area
属性。它还需要启动其他一些 org.eclipse.core.runtime 服务。
JavaCore.create(*)在JDT中...... org.eclipse.jdt.core 的部分可能在没有UI工作台的情况下运行,但这实际上取决于哪些部分。
可以运行包含 org.eclipse.core.runtime 和 org.eclipse.core.resources (工作空间)的HEADLESS RCP应用程序,而不包括任何UI组件,但如果不启动OSGi和核心运行时,您将无法使用工作区。