2017-02-20 13 views
0

eclipseプラグインを作成しようとしています。自分のコードでjarファイルを使用する必要があります。 。eclipseプラグインにjarを追加

public class SampleHandler extends AbstractHandler { 
    @Override 
    public Object execute(ExecutionEvent event) throws ExecutionException { 

JARファイル内 直接プロセスp = Runtime.getRuntime()EXEC(checkStyle_cmd)を使用してアクセスされます。 checkDtyle_cmdは文字列 "java -jar" + "jarファイルの場所" +(その他のもの)です。

私は 'lib'フォルダを作成しました。ソースフォルダとして使用しました。そこに瓶を貼った。ランタイムのクラスパスに "/ProjectName/lib/jar_file_name.jar"を追加しました。動作しませんでした。 したがって、bin.includesの/Test5/lib/checkstyle-7.1.2-all.jarもbuild.propertiesに追加されています。まだ運がありません。 jarファイルエラーにアクセスできない

+0

あなたが別のプロセスでjarファイルを実行しようとしている場合、それは現在である必要はありません。 **絶対**ファイルパスをjavaコマンドに渡すだけですが、javaコマンドを探す場所を 'exec'に正確に伝える必要があります。正確に何のエラーがありますか? –

+0

エラー「jarfile /Test5/lib/checkstyle-7.1.2-all.jarにアクセスするためのアンアンブル」が表示されます。それは絶対パスで動作します。しかし、私はプロジェクトをjarプラグインとしてエクスポートして、他の人が使用できるようにする必要があります。だから、私は相対的な道を与える必要があります。 –

答えて

0

あなたは、あなたのプラグインのようなものを使用してjarファイルの絶対パスを取得することができます:

Bundle bundle = FrameworkUtil.getBundle(getClass()); 

URL url = FileLocator.find(bundle, new Path("/lib/jar_file_name.jar"), null); 

url = FileLocator.toFileURL(url); 

String path = URIUtil.toFile(URIUtil.toURI(fileURL)).getAbsolutePath(); 
+0

バンドルとFrameworkUtilは何ですか? Eclipseからこれらのクラスをインポートするための提案はありません –

+0

これらは 'org.eclipse.osgi'プラグインに含まれていますので、プラグインの依存関係に追加してください。 –

0

実際にコマンドラインから実行するよりも、jarファイルを実際に抽出する方がよい場合があります。

.jarフォルダ内には、.javaファイルからコンパイルされ、VMによって実行されるバイトコードの.classファイルがあります。

thisウェブサイトを使用して.classファイルを逆コンパイルすることができます。

コマンドラインからコードを実行するのは、絶対パスと相対パスを知る必要があると言われているように、すべてのソースコードをコンパイルして1つにする方が良いでしょう.jarではなく、2つの.jarです。

+0

SampleHandler.class.getClassLoader()。getResource( "filename");を使用してjarファイルのパスを取得しようとしました。うまく行かなかった。私はテキストファイルで試しました。ファイルがsrcフォルダにあるときだけ出力されます。それがlibフォルダ(私はソースフォルダにchagedしている)にある場合、パスを表示しません –

関連する問題