2011-03-15 109 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湯姆