java - 调用 ResourcesPlugin.getWorkspace() 时出现 IllegalStateException : Workspace is closed,

标签 java eclipse eclipse-pde

我目前正在尝试使用 eclipses 工作区访问我的 eclipse 项目 和项目抽象,但我很快就失败了。

请看下面的代码:

public static void main(String[] args) throws Exception {
    String[] equinoxArgs = { "-debug", "-data", "C:\\dev\\build\\workspace" };
    EclipseStarter.startup(equinoxArgs, null);
    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    System.out.println(workspace);
}

如果我执行它,我会得到:

Exception in thread "main" java.lang.IllegalStateException: Workspace is closed.
    at org.eclipse.core.resources.ResourcesPlugin.getWorkspace(ResourcesPlugin.java:399)
    at de.jaculon.samples.osgi.OsgiSample.main(OsgiSample.java:21)

有人知道如何解决这个问题吗?

感谢您的帮助。

最佳答案

EclipseStarter 不会初始化 Eclipse 工作区。

要运行 headless Eclipse 应用程序,您必须定义一个在插件中实现 org.eclipse.equinox.app.IApplication 的类。

plugin.xml 中定义一个应用程序:

<extension
     id="app-id"
     point="org.eclipse.core.runtime.applications">
   <application
        cardinality="singleton-global"
        thread="main"
        visible="true">
     <run
           class="application class">
     </run>
  </application>
</extension>

然后您运行应用程序

java -jar plugins/org.eclipse.equinox.launcher_xxx.jar -application application-id -debug -data datapath

关于java - 调用 ResourcesPlugin.getWorkspace() 时出现 IllegalStateException : Workspace is closed,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21435598/

相关文章:

java - Java 中递归的奇怪行为

java - 分词器在分割之前跳过空白值 - Java

java - 为什么在 Java 中必须初始化嵌套循环控制变量?

java - 使用不同的相对路径将模块添加到 Maven 多模块项目中

eclipse - 有谁知道我如何包含 sun.lwawt.LWComponentPeer;在我在 Windows 上运行的代码中?

eclipse-plugin - 在自动构建中从现有 jar 创建 Eclipse 插件

Java ArrayList ArrayIndexOutOfBoundsException

android - Eclipse 可执行启动器无法找到其配套共享库

eclipse - 如何在 clojure 中开发 Eclipse 插件?

eclipse - 如何以编程方式运行 Eclipse 启动配置?