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