Как использовать IWorkspace ws=ResourcesPlugin.getWorkspace() Eclipse в обычном Java-проекте?

#java #eclipse #eclipse-plugin #eclipse-rcp #m2eclipse

#java #eclipse #eclipse-плагин #eclipse-rcp #m2eclipse

Вопрос:

Как использовать IWorkspace ws=ResourcesPlugin.getWorkspace() Eclipse в обычном Java-проекте?

Я хочу использовать Eclipse workspace feting API ( IWorkspace ), он отлично работает, когда я использовал это при разработке плагинов. Но когда я пишу Java-программу и использую тот же код, он перестает работать и выдает исключение: Exception in thread "main" java.lang.IllegalStateException: Workspace is closed.

 public class GitStatusCall {
    public static void main(String[] args) throws IOException, NoHeadException  {
        IWorkspace ws=ResourcesPlugin.getWorkspace();
        System.out.println();
    }
}
  

Комментарии:

1. В отличие, например, от JGit и компилятора Eclipse для Java (ecj), это не предназначено для запуска за пределами Eclipse. Так что вы не можете.

2. Вы не можете использовать это в обычном Java-проекте, оно работает только в плагине Eclipse, работающем в Eclipse.

3. Основная проблема здесь заключается в том, что o.e.c.resources JAR является пакетом OSGi, а класс ResourcesPlugin является активатором для этого пакета. Управление рабочей областью связано с жизненным циклом пакета и для его функционирования требуется работающая платформа OSGi. Это верно и для зависимостей этого пакета (o.e.c.filesystem, o.e.c. выражения, o.e.c.время выполнения).

4. Гипотетически, что вы хотите сделать с рабочей областью?

Ответ №1:

ResourcesPlugin.getWorkspace() возвращает текущую рабочую область Eclipse, в которой работает Eclipse. Но у вас не работает Eclipse, так что это не имеет смысла. Вам нужно будет запустить Eclipse. Вероятно, есть более простой способ сделать все, что вы пытаетесь сделать.