2016-03-25 31 views
0

私は外部ライブラリとして使用したいJavaアプリケーションを作成しました。だから私は、jarファイルを作成し、別のプロジェクトにインポートします。 私は自分のライブラリを使用する場合、私は問題は二行目(addMachineStat(....))からスローされSigarExceptionであるように思わ例外(sigar例外)インポート後にエラーが発生することをスローする

public void addMachineStat(String ip,String computerTitle) throws InterruptedException, SigarException { 
     Resources rs=new Resources(new Sigar()); 
     addMachineStat(ip,computerTitle,Double.toString(rs.getAllCpus()),Double.toString(rs.getMemory()),rs.getNetwork(),Double.toString(rs.getFreeHddPerc())); 
    } 

として宣言されて

notif.addMachineStat(ip,"Harvester"); 

を呼び出します。何らかの理由で、SigarExceptionクラス(import org.hyperic.sigar.SigarException;)がjarファイルから新しいプロジェクトに持ち込まれません。他のプロジェクトでもインポートする必要がありますか?ユーザーがそれをインポートする必要がなく、瓶からそれを得る方法はありませんか?

面白いことに、私が2番目のプロジェクトでMavenを使用していると(私のライブラリプロジェクトが最初にMavenを使用しています)、うまく動作しているようです。

答えて

0

はい、使用するコードやライブラリが依存するすべてのjarファイルは、mavenやgradleなどのビルドツールを使用しない限り、インポートする必要があります。
Mavenはすべての作業

推移の依存関係がMavenの2.0の新機能です作る推移依存機能を備えています。これにより、依存関係に必要なライブラリを検出して指定する必要がなくなり、自動的にそれらを含めることができます。

この機能は、依存関係のプロジェクトファイルを指定されたリモートリポジトリから読み込むことによって容易になります。一般に、これらのプロジェクトのすべての依存関係は、プロジェクトが親から継承したものや依存関係から継承されます。

それがうまく動作する理由です。

だから、あなたは(優先順に)いくつかのオプションがあります:

  1. は、Mavenのか、他のビルドツールを使用してください。 Including dependencies in a jar with Maven
  2. で説明したようにすべての一般的なIDEを手動で
を依存関係を管理する1瓶にすべてのdependinciesとビルドツールとの統合(例えばM2Eclipseプラグイン)
  • 総会あなたのライブラリーを持っています
  • 関連する問題