自分自身のjarファイルの位置はSystem.getProperty("java.class.path")で取れる。けど、相対パスになることがあるから、FileをPathやらを使って絶対パスを取得する。
package testjarpath;
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
public class TestJarPath {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// classパスを取得
// jarならjarファイル名
String jar_path = System.getProperty("java.class.path");
System.out.println(jar_path);
// ↑これだと、相対パスになることがある。
// ので、絶対パスを取得する。
File jar_file = new File(jar_path);
String jar_path2 = jar_file.getAbsolutePath();
System.out.println(jar_path2);
// ↑ これでも中途半端。"/tmp/./TestJarPath.jar"みたいになる。
// ↓ normalize()で正規化する。
Path path = Paths.get(jar_file.getAbsolutePath());
String jar_path3 = path.normalize().toString();
System.out.println(jar_path3);
}
}