クラスのインスタンスを作成するだけで、Javaリフレクションなどを使用してプロジェクト名を見つけるにはどうすればよいですか?プロジェクト名(私が本当に欲しいもの)でない場合、パッケージ名を見つけることができますか?
3 に答える
プロジェクトはIDEが使用する単なる編成ツールであるため、プロジェクト名はクラスまたはJVMに含まれる情報ではありません。
パッケージを取得するには、Class#getPackage()を使用します。次に、Package#getName()を呼び出して、コードのパッケージ宣言に表示される文字列としてパッケージを取得できます。
Class<?> clazz = Application.class;
Package package = clazz.getPackage();
System.out.println(package.getName());
プロジェクト名は、IDEの設定ファイルにあります。Eclipseの.projectです。これはxmlファイルであり、プロジェクト名はprojectDescription要素の子要素名にあります。
プロジェクト名はJavaには認識されませんが、通常はコードがあるディレクトリの名前です。
たとえば、プロジェクト(EclipseまたはIntellij)で作業していて、そのプロジェクトがフォルダー「〜/ eclipse-workspace / myproject」にある場合、必要なプロジェクト名はおそらく「myproject」です。これは普遍的ではないことに注意してください。開発環境の外でも適用できます。
したがって、おそらく必要なのはユーザーdirであり、その場合はプロジェクト名と一致します。誰かがバイナリ(jarまたはクラスファイル)を持っている場合、それはそれが実行される場所になります-これは同じではない可能性があります。
ただし、それが必要な場合は、次を使用してください。
String userDir = System.getProperty("user.dir");
Path path = Paths.get(userDir);
String project = path.getFileName();