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

查看 106|回复 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 都能反编译修改, 只是你的方法不对
zhazi   
没必要 unzip 直接 vim 进去改就行了,打包时可能会有其他步骤,zip 时被忽略了
wetalk   
这要从 jar 打包原理说起了
githmb   
额,Jar 不是有签名吗,你能这样改的啊
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
mikasa1024   
用 jar -cfM0 打包,例如:
jar -cvfM0 server.jar BOOT-INF/classes BOOT-INF/lib META-INF org
nkidgm   
对啊,类似安卓 APK 那种,改完还要重新签名,安卓系统才能安装那份包。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部