0

私の Java プロジェクトでは、現在のパッケージ内のすべてのクラス名をリストする必要があります。通常、アプリケーションを次の 2 つの異なるモードで実行します。<1> NetBeans から、<2> NetBeans によってパッケージ化された実行可能 jar ファイルから。

私の質問は、実行中のモードに関係なく、アプリ内のすべてのクラス名をリストできるようにプログラムを作成する方法です。NetBeans モードで実行すると、src/ ディレクトリを調べてクラス名を一覧表示できますが、別のマシンでパッケージ化された実行可能 jar ファイル モードで実行すると、src/ ディレクトリが存在しないため、 jar エントリを一覧表示してクラス名を見つけようとしましたが、まだ jar 化されていないため、NetBeans で実行すると機能しません。

どのモードで実行されているかを検出して別の方法で処理できることはわかっていますが、どのモードで実行されているかを知らずにそれを行うより良い方法はありますか?


次のアプローチで問題が解決するかどうか疑問に思います:

http://snippets.dzone.com/posts/show/4831

getClasses(".") を試して現在のパッケージのクラスを取得しましたが、機能しませんでした。なぜですか?

フランク

4

2 に答える 2

0

ダイナミック クラス ローダーを使用していない場合は、クラスパスを検索し、各エントリに対してディレクトリまたは JAR ファイルを検索できます。

于 2010-03-03T18:20:42.650 に答える
0

どのクラスがパッケージに含まれているかはわかりません。これは、誰もがパッケージに他のクラスを追加できるためです (たとえば、他の jar ファイルから)。

ただし、Java API には jar ファイルを調べる関数があります。ただし、実行方法から完全に独立しているわけではありません。

于 2010-03-03T18:22:14.147 に答える