微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将文件编写器的路径设置为使用它的 jar 的位置?

如何解决如何将文件编写器的路径设置为使用它的 jar 的位置?

所以我最近切换到从服务启动 jar 文件,而不是首先转到相关目录的脚本。有没有办法确保使用 jar 文件的路径而不是服务启动它的地方?在应用程序中,我使用下面的代码获取正确的路径。

   try {
        Path p = Path.of(getClass().getProtectionDomain().getCodeSource().getLocation().toURI());

        workPath = p.getParent().toString();

        if( workPath.matches(".*[lib]")) { // Meaning used as a lib
            workPath = Path.of(workPath).getParent().toString();
        }
        settingsFile = Path.of(workPath,"settings.xml");
    } catch (URISyntaxException e) {
        Logger.error(e);
    }

解决方法

将您的工作路径存储为系统属性:

try {
    Path p = Path.of(getClass().getProtectionDomain().getCodeSource().getLocation().toURI());

    workPath = p.getParent().toString();
    if(workPath.matches(".*[lib]")) { // Meaning used as a lib
        workPath = Path.of(workPath).getParent().toString();
    }

    System.setProperty("tinylog.directory",workPath); // Set work path as system property
    settingsFile = Path.of(workPath,"settings.xml");
} catch (URISyntaxException e) {
    Logger.error(e);
}

使用tinylog.properties中的系统属性:

writer        = file
writer.file   = #{tinylog.directory}/log.txt
writer.format = {date: HH:mm:ss.SSS} {level}: {message}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。