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ファイルのパスを取得することはできません。

bannerAds