You need to enable JavaScript to run this app. 能否将XML存入Jar包?Maven构建Jar如何运行时写入XML及编辑内部属性文件
优惠活动
大模型
产品
解决方案
定价
更多

能否将XML存入Jar包?Maven构建Jar如何运行时写入XML及编辑内部属性文件

运行时向自身Jar包内写入XML文件是否可行

结论是不可行,原因如下:

  • Jar包是ZIP格式的只读归档文件,JVM加载Jar包运行的过程中,不支持直接向正在运行的自身Jar包内写入、修改文件
  • 即使强行在进程外修改Jar包内容,也会导致Jar包数字签名失效、下次启动加载异常等问题,不符合常规应用的设计逻辑
  • 如果需要存储create命令生成的XML文件,建议选择Jar包外的固定路径(比如当前用户目录、程序启动同级目录)做持久化存储。
依赖Jar包内properties文件的查看与编辑方案

查看操作

  • 本地直接查看:使用任意解压软件打开Jar包,找到对应路径下的properties文件直接打开查看
  • 代码中读取:通过类加载器加载资源流读取内容,示例代码:
InputStream is = 当前类.class.getClassLoader().getResourceAsStream("Jar包内properties文件的全路径名");
Properties prop = new Properties();
prop.load(is);

编辑操作

优先选择无侵入的类路径覆盖方案,无需修改原Jar包:

  • 在你自己项目的resources目录下,建立和Jar包内properties文件完全一致的路径和文件名,写入你需要修改的配置
  • 类加载器会优先加载你项目classpath下的同名文件,覆盖Jar包内的默认配置,实现配置自定义效果

如果必须修改原Jar包内的properties文件:

  1. 用解压工具解压Jar包到临时文件夹
  2. 找到对应properties文件修改后保存
  3. 执行Jar命令重新打包:jar cvf 新Jar包名.jar -C 临时文件夹路径/ .
  4. 注意:如果原Jar包有数字签名,修改后签名会失效,可能出现运行报错,这种场景必须使用类路径覆盖方案。

内容的提问来源于stack exchange,提问作者Fabio。

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 12:54:04