Jar 包有没有可能防止别人解压再打包运行?

查看 97|回复 7
楼主
作者:mankismi   
起因是这样的,我司购买了一套 Java 服务的部署版,原先我想 unzip ,并且修改一下 IP 地址(因公司换 IP 了)
结果重新打包后会出现运行错误,大约错误如下
An attempt was made to call the method javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String; but it does not exist. Its class, javax.servlet.ServletContext, is available from the following locations:
Action:
Correct the classpath of your application so that it contains a single, compatible version of javax.servlet.ServletContext
看着像是依赖包冲突了
操作流程
unzip xxx.jar -d jar
cd jar
zip -0r xxx.jar ./*
比较神奇,有人研究过这方面的问题吗?厂商原先的包是可以运行的
只要 unzip 再 zip 就会出现,即使不改任何配置
已经再安排找厂商拿新的 jar 包了,单纯好奇有技术是不是能防止别人 unzip 修改配置?

jar, unzip, zip, Let

沙发
mineralsalt   
当然能改, 不仅能改配置文件, class 都能反编译修改, 只是你的方法不对
3#
zhazi   
没必要 unzip 直接 vim 进去改就行了,打包时可能会有其他步骤,zip 时被忽略了
4#
wetalk   
这要从 jar 打包原理说起了
5#
githmb   
额,Jar 不是有签名吗,你能这样改的啊
6#
leeseaside   
可以改,,
如果是 win ,推荐使用 WinRAR,直接打开 xxx.jar 包,然后把想添加的文件压进去,压缩方式选择存储
如果是 linux,
解压出来
jar -xvf cxf-0.0.1-SNAPSHOT.jar BOOT-INF/classes/application.properties
压回去
jar -uvf cxf-0.0.1-SNAPSHOT.jar BOOT-INF/classes/application.properties
7#
mikasa1024   
用 jar -cfM0 打包,例如:
jar -cvfM0 server.jar BOOT-INF/classes BOOT-INF/lib META-INF org
8#
nkidgm   
对啊,类似安卓 APK 那种,改完还要重新签名,安卓系统才能安装那份包。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部