特定のパッケージが現在のクラスローダーまたはシステムに認識されているかどうかをテストしたいと思います。 Package.getPackage(String name)がnullを返すように見えます。 ClassLoaderには同じように貼り付けられたメソッドが含まれていません。Java:パッケージ(名前を使用)が存在するかどうかのテスト...
パッケージが存在するかどうかをテストするためにクラスをロードするのではなく、確かに良い方法です。
任意のポインタをいただければ幸いです。
特定のパッケージが現在のクラスローダーまたはシステムに認識されているかどうかをテストしたいと思います。 Package.getPackage(String name)がnullを返すように見えます。 ClassLoaderには同じように貼り付けられたメソッドが含まれていません。Java:パッケージ(名前を使用)が存在するかどうかのテスト...
パッケージが存在するかどうかをテストするためにクラスをロードするのではなく、確かに良い方法です。
任意のポインタをいただければ幸いです。
Package.getPackage(String name)
は、このジョブに適したツールです。必ず
Package.getPackages()
を試してみてください - インスタンス
getClass().getPackage()
のためのテスト、その後
Package.getPackage(String name)
メソッドは現在のクラスローダーのみ(または現在のクラスローダーがnullの場合はSystemクラスローダー)のパッケージを検索します。パッケージ内のクラスが現在のクラスローダーにロードされていない場合、パッケージは存在しません。
スレッドコンテキストクラスローダーを無視しているようです: –
クラスがそのパッケージから読み込まれていない限り、パッケージが存在するかどうかの情報を簡単に取得する方法はありません。 Package.getPackage
は、指定されたパッケージのクラスがロードされている場合にのみ機能します。
あなたのオプションがあります。
コードでもURLクラスローダーを使用している場合、2番目のオプションが失敗することがあります。
こんにちはPL、サポート用のthanx(: –