Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击eclipse插件时如何运行命令?_Java_Eclipse_Jar_Cmd_Eclipse Plugin - Fatal编程技术网

Java 单击eclipse插件时如何运行命令?

Java 单击eclipse插件时如何运行命令?,java,eclipse,jar,cmd,eclipse-plugin,Java,Eclipse,Jar,Cmd,Eclipse Plugin,我的Eclipse工作区中有一个插件项目。当我右键单击项目并单击“作为Eclipse应用程序运行”时,另一个Eclipse实例被打开,插件安装成功。单击插件按钮时,应用程序将打开 然而,当我导出项目、创建jar并将jar放在plugins文件夹下时,我可以看到plugin按钮,但是当我单击它时,应用程序没有打开 下面,我将显示正在执行的java类: Bundle bundle = Platform.getBundle("com.example.eclipse.plugin");

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

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

下面,我将显示正在执行的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放在plugins文件夹中时,不会发生这种情况。请帮助我找到了什么。

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


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

检查.log文件是否有错误。使用-consoleLog选项运行Eclipse,这样您就可以真正看到那些“printStackTrace”消息。添加一些日志,甚至只是简单的System.out.println消息,以查看代码的进展情况。我没有看到任何错误。在pb.start()之后添加了syso。无论我在syso中添加了什么,都会打印。嗨,Mario,谢谢你的回复,我已经在build.properties中包含了我的jar,但是没有运气。真奇怪,因为你的代码对我来说是有效的。只说两句。首先,导出的插件应该位于“dropins”文件夹中,而不是“plugins”文件夹中。第二,也是非常重要的一点,确保正确创建JAR文件(abc.JAR)。它必须是一个“可运行的JAR文件”。请观看此视频,了解如何完成:。再试一次,如果这样做有效,我会更新我的答案,这样你就可以,如果你愿意,投票并接受它。你好,马里奥,我把它放在dropins文件夹并启动了我的eclipse,但仍然没有运气,日志文件中也没有错误。我已经根据视频创建了一个可运行的jar文件。只要abc.jar是可运行的,您的代码在Eclipse第二个实例和安装导出的插件时都适用于我。abc.jar文件的内容是什么?您是否100%确定它没有被执行?尝试在abc.jar中编写一些琐碎的代码,例如:“JFrame frame=newjframe(“FrameDemo”);frame.setVisible(true);”。。。看看这段代码是否真的在执行。还要确保没有收到任何错误。更改“catch”语句的代码,添加“prints”以查看发生了什么。。。您有很多选择来研究正在发生的事情。除了我刚才(5分钟前)在上一篇评论中发布的内容外,请确保您导出的插件中包含abc.jar文件。只需打开您获得的“com.example.eclipse.plugin.jar”文件,就可以做到这一点。您可以使用任何打开压缩文件的应用程序打开此文件,例如WinRar。