【问题标题】:MessageBox doesnt appear when eclipse plugin has been deployed?部署eclipse插件后MessageBox不出现?
【发布时间】:2014-03-11 18:45:15
【问题描述】:

我编写了一个 Eclipse 插件,并在 Eclipse“帮助”菜单中添加了帮助选项。单击该帮助会显示 MessageBox。

当我通过 Eclipse 应用程序运行或调试时会出现此 MessageBox,但是当我在其他 PC 上部署此插件并单击帮助时,MessageBox 不会出现。

这是我的代码:

public class MyHelp implements IWorkbenchWindowActionDelegate {

    public void run(IAction arg0) {

        try {

        String message = "This is demo data";

        // TODO Auto-generated method stub
        MessageBox box = new MessageBox(new Shell(), SWT.OK);
        box.setMessage(message);
        box.setText("Help title");
        box.open();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

谁能帮我解决这个问题..?

为了帮助,我在我的插件中添加了一个 ActionSet:

<extension
         point="org.eclipse.ui.actionSets">
      <actionSet
            id="com.my.plugin.actionSet"
            label="My ActionSet"
            visible="true">
         <menu
               id="mymenu"
               label="My Menu" 
               path="help/helpStart">
            <groupMarker
                  name="start">
            </groupMarker>
            <separator
                  name="additions">
            </separator>
         </menu>
         <action
               class="com.myexample.MyHelp"
               id="MyHelp"
               label="Use Help"
               icon="icons/plugin_help.png"
               menubarPath="help/mymenu/start"
               style="push">
         </action>
        </actionSet>
   </extension>

我还需要做什么吗?

【问题讨论】:

  • 如何将插件部署到另一台 PC?
  • 调试时控制台上是否有任何警告/其他输出(在哪里工作)?您还可以尝试从命令行(部署后)运行 eclipse 实例,并查看尝试打开对话框时是否显示任何错误。
  • @AlexanderGavrilov:我从 plugin.xml 将我的插件导出为 jar 并复制到 eclipse 的插件文件夹中。
  • @Cedric :当我调试应用程序时它可以工作......但是当我将它部署为插件文件夹中的插件时它失败......你能告诉我如何从命令行运行插件......
  • 好吧,我只需将它安装在一个 Eclipse 实例上,然后从命令行运行它。打开命令行,导航到 eclipse 目录并执行它。例如在 Windows 的 cmd 中输入cd C:\path\to\eclipse,然后输入eclipse.exe,我不确定其他操作系统...

标签: eclipse eclipse-plugin eclipse-rcp


【解决方案1】:

如果您正在运行 eclipse >= 3.3,那么您可以将其放到 plugins 文件夹中。另外,尝试使用-clean option 重新启动您的eclipse。

我建议您使用 dropins 文件夹进行手动安装。请参考文档:http://wiki.eclipse.org/Equinox_p2_Getting_Started#Dropins

更新1: 为了运行您的代码,我必须添加一些未实现的方法(我使用的是 eclipse 3.6 版):

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;

public class MyHelp implements IWorkbenchWindowActionDelegate {

    public void run(final IAction arg0) {

        final String message = "This is demo data";

      // TODO Auto-generated method stub
        final MessageBox box = new MessageBox(new Shell(), SWT.OK);
        box.setMessage(message);
        box.setText("Help title");
        box.open();

   }

    public void selectionChanged(final IAction action, final ISelection selection) {
        // TODO Auto-generated method stub

    }

    public void dispose() {
        // TODO Auto-generated method stub

    }

    public void init(final IWorkbenchWindow window) {
        // TODO Auto-generated method stub

    }
}

另外,检查你的插件清单是否有以下行: Bundle-SymbolicName: your_plugin_id;singleton:=true 我刚刚将插件从工作区复制到了我的 eclipse 实例的 dropins 文件夹中,它开箱即用。

您确定该插件清单在 jar 文件中吗?检查 Bin 选项卡或 build.properties 以确保所有内容都正确导出。

希望对你有帮助

【讨论】:

  • 我已经在我的 .ini 中添加了 -clean 让我尝试将其放入 droppins... 但是将其部署在 plugins 文件夹和 droppin 文件夹中的主要区别是什么
  • “这里旧行为的一个微妙变化是添加到 dropins 文件夹的插件和功能被正确安装到系统中,而不是被强制安装。”。尝试将 -clean 设置为 eclipse.exe 进程的启动属性(右键单击 eclipse.exe - 属性,然后在 your_parth_to_exlipse/eclipse.exe 添加 -clean)。
  • 那不起作用:( ..我应该更改任何代码,例如实现接口或任何东西吗?
  • 嗯,这很奇怪。由于我刚刚尝试创建您的插件并将其放入 dropins 文件夹并运行我的本地 eclipse 并且插件就在那里。你,我不得不对你的类进行轻微的修改(因为它甚至没有被编译。请参阅上面答案中的代码)。你用的是什么版本的eclipse?和其他电脑上的版本一样吗?如果将其部署到用于开发的 Eclipse 中,它会起作用吗?
  • 我使用导出向导创建了插件 jar,并将插件 jar 放到了我的 droppins 文件夹中。插件工作的其他选项,例如 popmenus ......但是我提供的帮助选项不起作用......我正在使用 Eclipse靛蓝和朱诺。
猜你喜欢
  • 2018-10-15
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多