jar包同目录生成文件实现方式

 更新时间:2025年11月20日 08:37:01   作者:cmdch2017  
文章介绍了如何在Windows环境下将Java程序打包成jar文件,并在Linux环境下运行时生成JSON文件,关键点是确保生成的JSON文件与jar包在同一目录下,而不是当前工作目录(pwd)

jar包同目录生成文件

windows的java程序

打包成jar包,放到linux下运行,执行在jar包同目录下生成json文件,但是注意比如我执行

java -jar /path/to/testapikey/canon2-0.0.1-SNAPSHOT.jar

这个时候你的json文件

要和jar包同一位置,而不是当前pwd的路径

package com.example.canon2;

import java.io.File;
import java.net.URL;
import java.security.CodeSource;

public class JsonFilePathUtil {
    public static File getJsonFileInJarDir(String jsonFileName) throws Exception {
        CodeSource codeSource = JsonFilePathUtil.class.getProtectionDomain().getCodeSource();
        if (codeSource != null) {
            URL location = codeSource.getLocation();
            if (location != null) {
                String urlStr = location.toString();
                // 处理 jar:file:/path/to/your.jar!/ 这种格式
                if (urlStr.startsWith("jar:")) {
                    urlStr = urlStr.substring(4, urlStr.indexOf("!"));
                }
                if (urlStr.startsWith("file:")) {
                    File jarFile = new File(new URL(urlStr).toURI());
                    File jarDir = jarFile.isFile() ? jarFile.getParentFile() : jarFile;
                    if (jarDir != null) {
                        return new File(jarDir, jsonFileName);
                    }
                }
            }
        }
        // fallback: 当前工作目录
        return new File(jsonFileName);
    }

    public static void main(String[] args) throws Exception {
        File jsonFile = getJsonFileInJarDir("result.json");
        System.out.println("json file path: " + jsonFile.getAbsolutePath());
        // 这里可以继续写入 json 文件
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • IISExpress 配置允许外部访问详细介绍

    IISExpress 配置允许外部访问详细介绍

    这篇文章主要介绍了 IISExpress 配置允许外部访问详细介绍的相关资料,需要的朋友可以参考下
    2016-11-11
  • java中乐观锁与悲观锁区别及使用场景分析

    java中乐观锁与悲观锁区别及使用场景分析

    本文主要介绍了java中乐观锁与悲观锁区别及使用场景分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • java IO实现电脑搜索、删除功能的实例

    java IO实现电脑搜索、删除功能的实例

    下面小编就为大家带来一篇java IO实现电脑搜索、删除功能的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • idea自定义快捷代码生成模板的方法

    idea自定义快捷代码生成模板的方法

    这篇文章主要介绍了idea自定义快捷代码生成模板的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Java中四种访问权限资料整理

    Java中四种访问权限资料整理

    这篇文章主要介绍了 Java中四种访问权限总结的相关资料,需要的朋友可以参考下
    2017-05-05
  • Java中的原子类AtomicInteger使用详解

    Java中的原子类AtomicInteger使用详解

    这篇文章主要介绍了Java中的原子类AtomicInteger使用详解,原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程上下文切换,需要的朋友可以参考下
    2023-12-12
  • Java多线程并发与并行和线程与进程案例

    Java多线程并发与并行和线程与进程案例

    这篇文章主要介绍了Java多线程并发与并行和线程与进程案例,文章基于Java的相关资料展开详细的内容介绍,具有一定的参考价价值,需要的小伙伴可以参考一下
    2022-06-06
  • Spring MVC学习教程之RequestMappingHandlerAdapter详解

    Spring MVC学习教程之RequestMappingHandlerAdapter详解

    这篇文章主要给大家介绍了关于Spring MVC学习教程之RequestMappingHandlerAdapter的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-11-11
  • Java使用@EnableEurekaServer实现自动装配详解

    Java使用@EnableEurekaServer实现自动装配详解

    这篇文章主要介绍了Java使用@EnableEurekaServer实现自动装配过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • Java微服务实战项目尚融宝接口创建详解

    Java微服务实战项目尚融宝接口创建详解

    这篇文章主要介绍了Java微服务实战项目尚融宝的接口创建流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08

最新评论