2009-06-29 11 views
2

私はライブラリを開発中です。他のライブラリがクラスパスにある場合に備えて、いくつかの機能を追加してほしい。私の理解では、次のとおりです。Javaビルドタイムとランタイム依存性

    私はそのLIBからインポートした場所でそれを使用するので、ビルド時の依存関係になり
  • ランタイム依存がコードパスが、私はそれから何かを使用していますポイントに到達した場合にのみ存在し
  • ライブラリ

正しいですか?

答えて

6

正しいですか?

はい。 コードパスが、私はそれが実行パスに名前を付けるだろう...

に達した場合

ランタイム依存関係にのみ発生します。任意の時点で実行中のコードは、いくつかの

a.A a = new a.A();

に達し、クラスaの化合物。表がクラスパス上にない場合には、Runntime例外がスローされます。つまり、実行してエラーになるためにはこのポイントに到達する必要があります。あなたのプログラムがこの点に到達しなければ、決して失敗しません。

2

あなたはすでにこれを行っているかもしれませんが、クラスが実行時にクラスパス上にある場合とそうでない場合は、ClassLoaderを使用して明示的にクラスをロードし、クラスが見つからない場合これはあなたのケースのエラー状態のようには聞こえません)。あなたは、アダプタ層であなたのライブラリ呼び出しをラップされて検討する必要があります

try { 
    new MyClass(); // Could potentially thrown a ClassNotFoundException. 
    // ... yada yada 
} catch(ClassNotFoundException ex) { 
    // Do something else instead. 
} 

他のアプローチとアダプタのノーオペレーションの実装を提供する:それはのようなものを持つのではなく、読むのコードがたくさん明確にしますよライブラリが利用できない場合、残りのコードはライブラリが存在するかどうかには依存しません。

関連する問題