Linux下如何修改jar包配置文件或者替换静态资源文件

这篇博客介绍了如何在特殊情况下修改已打包的jar包中的配置或替换文件。首先创建一个文件夹,将jar包解压到该文件夹,然后进行必要的修改,最后使用jar命令重新打包。文中详细阐述了jar命令的使用方法,包括解压、删除、修改和打包的步骤,并提供了相关选项的解释,如`-c`、`-f`、`-M`和`-0`等。此外,还提及了shell中`rm`命令的使用以及extglob模式的开启和关闭,以便更灵活地删除文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在某些特殊情况下我们可能需要修改已经打包好的jar包里的配置或者替换图片文件等等,但是要修改jar包中的配置文件怎么办呢?

简单三步 解压jar包,修改后重新打包jar
先创建一个文件夹,将jar包拷贝至文件夹
mkdir test
1.解压
unzip TCAT.jar

1.1.移除jar包,最好先备份
rm TCAT.jar

2.修改你要改的配置或替换的文件

3.重新打包
jar -cfM0 TCAT.jar * (注意有空格)

jar命令参数:
-c 创建新的存档
-f 指定存档文件名
-M 不配置配置清单,这样还可以使用maven生成的配置清单也就是MANIFEST.MF
-0 不进行压缩,如果压缩会有问题
-m 指定清单文件
-t 列出归档目录
-x 从档案中提取指定的 (或所有) 文件
-u 更新现有的归档文件
-v 在标准输出中生成详细输出

拓展:
rm排除某个文件进行删除

extglob模式开启之后Shell可以另外识别出5个模式匹配操作符,能使文件匹配更加方便. 不然不识别!

1.开启命令:
shopt -s extglob
关闭命令:
shopt -u extglob

5个模式匹配操作符

  1. ?(pattern-list) - 所给模式匹配0次或1次;
    2.*(pattern-list) - 所给模式匹配0次以上包括0次;
    3.+(pattern-list) - 所给模式匹配1次以上包括1次;
    4.@(pattern-list) - 所给模式仅仅匹配1次;
    5.!(pattern-list) - 不匹配括号内的所给模式。

案例
反选删除文件:
(打开extglob模式)
shopt -s extglob
rm -fr !(file1)

多个要排除的:
rm -rf !(file1|file2)

当你尝试将含MATLAB m文件的Java程序打JAR且这些m文件依赖于像YALMIP和CPLEX这样的求解器工具箱时,可能会遇到一些兼容性和路径配置的问题。这是因为MATLAB Compiler创建的应用程序需要特定的方式来访问外部库。 以下是解决这个问题的一些步骤: ### 1. 确保所有必要的组件都已安装 首先确认你的环境中已经正确安装了: - YALMIP (通过MATLAB自带的支持) - IBM ILOG CPLEX Optimization Studio 或者其他版本的CPLEX solver - MATLAB Compiler SDK 和相关工具链用于生成 Java 可调用的 jar ### 2. 设置正确的编译选项 在编写 `deploytool` 脚本或者直接使用命令行来进行编译的时候,请确保指定了 `-a` 参数以添加额外搜索目录到最终的产品中,例如指向含有 `.jar` 文件以及对应原生二进制文件夹的位置。对于某些solver来说还需要设置环境变量如 LD_LIBRARY_PATH 来让运行时期间能找到所需的动态链接库. ```bash mcc -v -W java:myProject,Class1,... -T link:lib ... -a "path/to/cplex/lib/*" myMain.m ``` > 注意这里的 `"path/to/cplex/lib/*"` 应替换为你实际存放 cplex dll/so 的完整绝对路径; 同样地处理yalmpx所需资源. ### 3. 修改部署后的应用程序代码结构 为了让Java应用能够顺利加载初始化来自Matlab Compiled Code中的Solver实例,在启动阶段就要做适当的调整: #### 在入口点处预加载native library 如果目标平台上存在与操作系统相关的本地共享对象(.dll,.so),那么你应该考虑将其显式注册给 JVM 。这可以通过静态块完成: ```java public class Main { static{ System.loadLibrary("cplex"); // or wherever your native libs are located. } public static void main(String[] args) throws Exception { ... } } ``` 另外也可以借助第三方工具比如 One-Jar 来简化多层嵌套 JAR 结构下的 Native Library 加载流程。 #### 配置classpath使得Solver API可见 保证项目内的build path含了全部需要用到的三方APIs。同时记得把它们一同加入到分发版制品当中去。 ### 4. 测试验证 最后别忘了对整个系统进行全面的功能测试,特别是在不同平台之上(Windows vs Linux),因为很多低级细节都会影响最终结果的表现形式。 希望以上信息能帮助您解决问题!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值