Javaからjarファイルのディレクトリを取得する方法
ProtectionDomainクラスを使用して、jarファイルのあるディレクトリを取得できます。
以下にサンプルコードを記載しておきます。
import java.security.CodeSource;
import java.security.ProtectionDomain;
public class JarPathExample {
public static void main(String[] args) {
ProtectionDomain protectionDomain = JarPathExample.class.getProtectionDomain();
CodeSource codeSource = protectionDomain.getCodeSource();
String jarPath = codeSource.getLocation().getPath();
System.out.println("Jar所在目录:" + jarPath);
}
}
このコードでは、まずgetProtectionDomain()メソッドから現在のクラスの保護域(ProtectionDomain)を取得する。それから、getCodeSource()メソッドからJARファイルのソース(CodeSource)を取得する。最後に、getLocation()メソッドからJARファイルの場所を取得し、getPath()メソッドを使ってJARファイルのディレクトリのパスを取得する。
ただしアプリケーションのJar化が前提です。実行中の場合は、ClassのgetResource()メソッドでクラスパスのリソースファイルのパスを取得できます。
String jarPath = JarPathExample.class.getResource("/your_resource_file").getPath();
your_resource_fileはリソースファイルのパスです。
なお、jarファイルを配置した環境でしかJarファイルが格納されているディレクトリを取得するコードは機能しません。例えば、IDEでmainメソッドを実行して、Jarファイルのパスを取得することはできません。