hiiragi's ブログ

主にコンピュータ関係の備忘録を書いてます

Jarファイルのパスを取得する

適当なClassとClass.getResource()を使って調べる。
ClassLoader.getResource()では取得できなかった。

import java.util.*;
import java.lang.*;
import java.io.File;
 
class Main
{
    public static void main (String[] args) throws java.lang.Exception
    {
        final String classFileName = "/" + Main.class.getName().replaceAll("\\.", "/") + ".class";
        System.out.println("classFileName: " + classFileName);
        
        final String classFilePath = Main.class.getResource(classFileName).getPath();
        System.out.println("classFilePath: " + classFilePath);
        
        final File jarFilePath = new File(classFilePath.replaceFirst("!/.*$", ""));
        System.out.println("jarFilePath: " + jarFilePath);
        
        final String jarFileName = jarFilePath.getName().replaceFirst("\\..+$", "");
        System.out.println("jarFileName: " + jarFileName);
    }
}

参考