JAVA获取程序(打成jar或classpath)所在目录

一、简述

  JAVA获取程序(打成jar或classpath)所在目录。

二、代码

package dearcloud.utils.context;

import dearcloud.utils.StringUtils;

import java.io.File;

public class AppContext {
    public static String baseDirectory() {
        try {
            String path = ClassLoader.getSystemResource("").getPath();
            if (StringUtils.isNullOrEmpty(path))
                return getProjectPath();
            return path;
        } catch (Exception ignored) {
        }
        return getProjectPath();
    }

    private static String getProjectPath() {
        java.net.URL url = AppContext.class.getProtectionDomain().getCodeSource()
                .getLocation();
        String filePath = null;
        try {
            filePath = java.net.URLDecoder.decode(url.getPath(), "UTF-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (filePath.endsWith(".jar"))
            filePath = filePath.substring(0, filePath.lastIndexOf(File.separatorChar) + 1);
        java.io.File file = new java.io.File(filePath);
        filePath = file.getAbsolutePath();
        return filePath;
    }
}
原文地址:https://www.cnblogs.com/songxingzhu/p/10245972.html