クラスが圧縮された .war ファイルからロードされているか、別の場所にロードされていると仮定してみましょう。特定のパッケージ内のすべてのリソースを検出するにはどうすればよいでしょうか? これは war ファイルであるため、ファイルの列挙は実際には機能しません。ほとんどの場合、これには現在のクラスローダーの使用が含まれますか?
そのようなことをするライブラリはありますか?グーグル検索では、リスト ファイルを使用したいくつかのハッキングのみが明らかになりました。
はい。使用できますClassLoader.getResources("")
;
または、フェレットAPIを使用することもできます:
https ://www.ohloh.net/p/pureperfect-ferret
このAPIを使用すると、Visitorパターンを使用して、クラスパスと任意のアーカイブおよびディレクトリをスキャンできます。
いいえ、パッケージ内のリソースをリストすることはできません。JVM は、どのパッケージにどのリソースが含まれているかを単純に認識していないためです。この質問を参照してください。
Spring Framework は と呼ばれるクラスを提供しますPathMatchingResourcePatternResolver
。このクラスを使用すると、ワイルドカードを使用して Ant スタイルのパスを指定でき、関連するリソースが検索されます (クラスパス上のフォルダーと jar を検索します)。
私はこれを行います:-パッケージ化する前に、ls myResources/*.ext > myResources/list.txt
-最初にファイルを読み取るだけです