首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在远程Linux服务器上编辑现有jar中的application.properties或application.yml文件的内容

如何在远程Linux服务器上编辑现有jar中的application.properties或application.yml文件的内容
EN

Stack Overflow用户
提问于 2012-09-25 22:52:09
回答 8查看 43.6K关注 0票数 33

如何在远程Linux服务器上编辑现有jar文件中的属性文件(如application.properties)。

假设jar位于/home/user/my-spring-boot.jar中,并且我希望将application.propertires中的用户名从

代码语言:javascript
运行
复制
username=foo

代码语言:javascript
运行
复制
username=bar

如何打开文件并更改属性?

EN

Stack Overflow用户

发布于 2019-05-20 14:53:56

我发现Java (或者更具体地说是Spring Boot )对JAR中文件的顺序过于挑剔(引入了循环库依赖关系:“应用程序上下文中的一些bean的依赖关系形成一个循环”)。因此,需要一种保持顺序的方法。

使用unzip 1.jar解压原始的JAR 1.jar,并在生成的目录树中进行更改。然后生成一个新的归档2.jar,同时通过使用原始1.jar作为引用来保留文件的顺序。

代码语言:javascript
运行
复制
## -r = --recurse-paths
## -Z = --compression-method
zip -r -Z store 2.jar $(unzip -l 1.jar |tr -s ' ' |cut -d' ' -f5 |grep -v /$ )
zip -r -Z store 2.jar $(unzip -l 1.jar |tr -s ' ' |cut -d' ' -f5 |grep    /$ )

这将目录放在文件之后,这很奇怪,但这是我找到的唯一工作方式(关于循环依赖问题)。这两行代码可以合并到一个对zip的调用中,但为了整洁起见,我在这里将它们分开。

为了使顺序保留起作用,可能需要重新创建新的归档2.jar (尚未存在)。

Java要求在不进行进一步压缩的情况下归档嵌套的JAR文件。要实现这一点,最简单的方法是对写入新归档的所有文件使用-Z store。这可能会导致新的归档文件比原始归档文件大。

你可以像下面这样检查归档文件的内部顺序(插入你最喜欢的图形化比较工具)

代码语言:javascript
运行
复制
diff <(unzip -t 1.jar) <(unzip -t 2.jar)

在Ubuntu 18.04上测试。

票数 1
EN
查看全部 8 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12585567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档