2012-02-13 6 views
0

Eclipseプラグインで開発中です。プラグイン内からexeファイルを実行する必要があります。このため 、私は、Javaコードを使用しています:Eclipseプラグインからexeファイルを実行する

pはプロセスである
p = Runtime.getRuntime().exec(command); 

。これは正常に動作します。

しかし、プラグインがデプロイされているとき(私の開発環境で「eclipseアプリケーションを実行しているとき」)、プラグインは、Eclipseが存在するフォルダ内のexeファイルを探していますeclipse.exeファイル)。私はそこにexeファイルを置いてはいけません。

私は、プラグイン・ジャー(またはそのようなリソース・ファイルがある他のフォルダ)の中にそれを入れて、execコマンドがそれを見つけることを望みます。マイナーな追加:実行するには、私のexeファイルは、私はexeと同じディレクトリに置くdllが必要です。だから、それがプラグインから実行されるとき、exeはこのdllを見つけることができる必要があります。

どうすればよいですか?

答えて

2

execコマンドでは、exeのフルパスを指定する必要があります。あなたのバンドルがjarファイルとしてではなく、フォルダとして展開されていない場合は、あなたのバンドル内のexeファイルのフルパスを取得するには、

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

を使用もちろん、これは唯一の作業です。バンドルをjarファイルとしてデプロイする場合は、実行する前にexeファイルを解凍する必要があります。

+0

ありがとうTom。 2つのフォローアップの質問:(1)「my.bundle.id」が何であるかを知るにはどうすればよいですか? (2)私の機能はいくつかのプラグインプロジェクトで構成されています。 jarやその他のものをフォルダとして展開できますか? exeとdllを別々のプラグインプロジェクトに入れて、このプラグインのみをフォルダとしてデプロイするのがベストでしょうか? – user990371

+0

1: 'META-INF/MANIFEST.MF'を見てください。バンドルIDは' Bundle-SymbolicName'です。 –

+0

2:はい。バンドルをフォルダとして展開するには、バンドルクラスのパスにjarファイルを追加する必要があります。たとえば、 'Bundle-ClassPath:myplugin.jar'、' build.properites'は次のようになります: 'bin.includes = META-INF/、\ myplugin.jar、 about.html \、\ OSGI-INF/ source.myplugin.jar = SRC/ src.includes = ' –

関連する問題