2011-03-15 112 views
0

我正在开发一个Eclipse产品。在我的插件中,我添加了一个需要执行的可执行文件(.exe)。当我从eclipse启动产品时,使用我的文件系统上可执行文件的路径引用该文件,并一切正常。Eclipse在jar中执行一个文件

当我导出产品时,插件被打包在一个包含可执行文件的jar文件中。当它引用文件时,路径如下所示:

$path_to_the_plugin_jar!/$path_to_exe_file_inside_the_jar 

使用此路径启动新进程抛出异常。

我该如何引用jar中的文件?我怎样才能执行该文件?

我可以在使用eclipse导出产品时提取文件吗?

谢谢

回答

0

谢谢您的回答。

正如Konstantin Komissarchik所建议的那样,我通过将产品从基于插件的功能转换为基于功能的功能,并通过在feature.xml文件中为插件指定“Unpack ....”来解决问题。

当我导出产品时,插件被分解到一个文件夹中,我可以引用我需要的文件。

3

EXE文件需要由Windows执行。对于所有实际用途,jar文件都是zip文件,所以基本上需要弄清楚如何让Windows在ZIP文件中运行EXE文件。

据我所知没有这样的设施存在,所以你必须提取EXE文件到临时位置,并从那里运行。

+1

或者,您可以将该插件标记为在安装时爆炸。你在你的功能中做到这一点。在这种情况下,您将拥有一个插件目录而不是插件jar。 – 2011-03-15 16:11:15

+0

感谢提示!这应该可能是解决方案..但我怎么能告诉ecplipse爆炸插件? – hara 2011-03-15 16:39:25

0

在执行之前,您可以将文件解压缩到捆绑状态位置。 类似的东西:

InputStream stream = FileLoactor.openStream(myBundle, new Path("path/to/exe/") 
IPath pathUnpacked = myBundle.getStateLocation().append("myExe.exe"); 
writeToDisk(stream, pathUnpacked); 
Program.launch(pathUnpacked.toOSString()); 

HTH汤姆