2012-02-13 136 views
0

在我開發的eclipse插件中,我需要從插件中執行exe文件。 對於這一點,我使用的Java代碼:從eclipse插件運行exe文件

p = Runtime.getRuntime().exec(command); 

哪裏p是過程。這工作正常。

但是,當部署插件(已經在我的開發環境中使用「運行eclipse應用程序」時),插件正在eclipse所在的文件夾中查找exe文件(靠近eclipse.exe文件)。我不想把我的exe放在那裏。

我希望eclipse將它放入插件jar(或者其他可以找到這樣的資源文件的文件夾中),並且exec命令會在那裏找到它。小增加:爲了運行,我的exe文件需要一個dll,我把它放在與exe相同的目錄中。所以當它從插件運行時,exe需要能夠找到這個dll。

我該怎麼做?

回答

2

您必須在exec命令中指定exe文件的完整路徑。爲了讓您的包內的exe的完整路徑,使用

URL url = FileLocator.resolve(FileLocator.find(Platform.getBundle("my.bundle.id"), new Path("path/within/my/bundle.exe"), Collections.EMPTY_MAP)); 

這當然只是如果你的包是不是部署爲JAR文件的工作,但作爲文件夾。如果你想將你的bundle部署爲jar文件,你必須在執行之前解壓exe文件。

+0

非常感謝湯姆。兩個後續問題:(1)我怎麼知道什麼是「my.bundle.id」? (2)我的功能是由幾個插件項目組成的。我可以將其中一些作爲罐子和其他作爲文件夾進行部署嗎?如果我把exe和dll放在一個單獨的插件項目中,並且只部署這個插件作爲文件夾,也許最好? – user990371 2012-02-13 15:12:59

+0

1:看看你的'META-INF/MANIFEST.MF',捆綁ID是'Bundle-SymbolicName'。 – 2012-02-13 15:15:51

+0

2:是的。要將bundle部署爲文件夾,必須在bundle-class路徑中添加jar文件,例如'Bundle-ClassPath:myplugin.jar'和你的'build.properites'應該看起來像這樣:012. bin.includes = META-INF/,\ myplugin.jar,\ about.html,\ OSGI-INF/ source.myplugin.jar = SRC/ src.includes = about.html ' – 2012-02-13 15:23:11