これらのjar内の.classファイルを検索できるすべてのjarパスを取得したいと思います。App mainフォルダーの下にあるすべてのjarを検索する関数を作成しましたが、問題が発生しました。一部のjarバンドルは存在しますが、古く、OSGiでは使用されていません。xxxx_1.0.0.jarとxxxx_1.2.0.jarの両方が存在しますが、OSGiで使用されるのは1.2.0のみです。メインフォルダで検索すると、そのうちの1つが結果リストに表示されます。
では、OSGiで使用されているすべてのjarファイルを取得する方法はありますか?次に、使用されていないjarファイルを除外できます。ありがとう
追加: この方法を使用してすべてのバンドルの絶対URLを取得しようとしましたが、失敗しました:
StringBuffer sb = new StringBuffer();
Bundle[] bundles = com.ibm.director.services.storage.debugtool.Activator.context.getBundles();
for (Bundle bundle : bundles) {
java.net.URL url = bundle.getClass().getProtectionDomain().getCodeSource().getLocation();
sb.append("File:" + url.getFile() + ", Path:" + url.getPath() + "\n");
}
しかし、次の出力が100回繰り返されました。
File:/opt/ibm/director/lwi/runtime/core/eclipse/plugins/org.eclipse.osgi_3.4.3.R34x_v20081215-1030-RCP20120203-1500.jar
File:/opt/ibm/director/lwi/runtime/core/eclipse/plugins/org.eclipse.osgi_3.4.3.R34x_v20081215-1030-RCP20120203-1500.jar,
File:....
使用されているバンドルの数は588です。これは正しい可能性があり、APIから絶対バンドルパスを取得できますが、なぜそれらがすべて同じなのですか?どうすれば実際のパスを取得できますか?