【问题标题】:How to run a command when the eclipse plugin is clicked?单击eclipse插件时如何运行命令?
【发布时间】:2016-04-29 00:02:11
【问题描述】:

我的 Eclipse 工作区中有一个插件项目。当我右键单击该项目并单击“作为 Eclipse 应用程序运行”时,会打开另一个 Eclipse 实例并成功安装插件。单击插件按钮时,应用程序将打开。

但是,当我导出项目时,创建 jar 并将 jar 放在 plugins 文件夹下,我可以看到插件按钮,但是当我单击它时,应用程序没有打开。

下面,我展示了正在执行的java类:

Bundle bundle = Platform.getBundle("com.example.eclipse.plugin");
        URL url = FileLocator.find(bundle, new Path("webspy/lib/abc.jar"), null);
        File file=null;
        try {
            url = FileLocator.toFileURL(url);
            file = URIUtil.toFile(URIUtil.toURI(url));

            String[] str={"java", "-jar", file.getAbsolutePath()};
            ProcessBuilder pb = new ProcessBuilder(str);
            Process p = pb.start();
        } catch (URISyntaxException e1) {
            e1.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        }

plugin.xml 文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>

   <extension
         point="org.eclipse.ui.actionSets">
      <actionSet
            label="Sample Action Set"
            visible="true"
            id="com.example.eclipse.plugin.actionSet">
         <menu
               label="FEAT"
               id="sampleMenu">
            <separator
                  name="StartWebSpy">
            </separator>
         </menu>
         <action
               label="&amp;Start WebSpy"
               icon="icons/sample.gif"
               class="com.example.eclipse.plugin.actions.SampleAction"
               tooltip="Start WebSpy"
               menubarPath="sampleMenu/sampleGroup"
               toolbarPath="sampleGroup"
               id="com.example.eclipse.plugin.actions.SampleAction">
         </action>
      </actionSet>
   </extension>

</plugin>

单击按钮后,它必须运行一个可执行的 jar。当插件 jar 放在插件文件夹中时,不会发生这种情况。请帮助我错过了什么。

【问题讨论】:

  • 检查 .log 文件是否有错误。使用 -consoleLog 选项运行 Eclipse,这样您就可以真正看到那些“printStackTrace”消息。添加一些日志记录,甚至只是简单的 System.out.println 消息,以查看您的代码取得了多远。
  • 嗨 Greg,我添加了日志并使用 -consoleLog 选项启动了 eclipse。我没有看到任何错误。在 pb.start() 之后添加了 syso,无论我在 syso 打印中添加了什么。

标签: java eclipse jar cmd eclipse-plugin


【解决方案1】:

问题是您的 JAR 文件 webspy/lib/abc.jar 未包含在导出的插件 com.example.eclipse.plugin 中。因此,当您单击按钮时,应用程序不会打开(因为找不到 JAR 文件)。检查错误日志(窗口 -> 显示视图 -> 错误日志),您将看到 Unhandled event loop exception

要解决此问题,您必须明确声明abc.jar 文件包含在您导出的插件中。这可以通过选中abc.jar 文件的复选框在build.properties 文件(特别是在Binary Build 部分)中完成。

【讨论】:

  • 嗨马里奥,感谢您的回复,我已将我的 jar 包含在 build.properties 但没有运气。
  • 多么奇怪,因为你的代码对我有用。只说两句。首先,您导出的插件应该位于“dropins”文件夹中,而不是“plugins”文件夹中。其次,非常重要的是,确保您正确地创建了 JAR 文件 (abc.jar)。它必须是“可运行的 JAR 文件”。看看这个视频,看看它是如何完成的:youtube.com/watch?v=mE3rbtKm-pk。再试一次,如果可行,我会更新我的答案,如果你愿意,可以投票并接受它。
  • 嗨马里奥,我把它放到 dropins 文件夹中并启动了我的 Eclipse,但仍然没有运气,日志文件中也没有错误。我根据视频创建了一个可运行的 jar 文件。
  • 只要 abc.jar 可运行,您的代码在 Eclipse 第二个实例和安装导出的插件时都适用于我。您的 abc.jar 文件的内容是什么?您是否 100% 确定它没有被执行?尝试在您的 abc.jar 中编写一些琐碎的代码,例如:“JFrame frame = new JFrame("FrameDemo"); frame.setVisible(true);" ...只是看看这段代码是否真的被执行了。还要确保您没有收到任何错误。更改“catch”语句的代码,添加“prints”以查看正在发生的事情......您有很多选择来研究正在发生的事情。
  • 除了我刚刚在之前的评论中发布的内容(5 分钟前),请确保 abc.jar 文件包含在导出的插件中。您只需打开您获得的“com.example.eclipse.plugin.jar”文件即可完成此操作。您可以使用任何打开压缩文件的应用程序打开此文件,例如 WinRar。
猜你喜欢
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多