我已将Web应用程序部署到Google应用引擎,而我的网络服务则使用了jersey 1.14框架。当我尝试在GAE上使用或调用Web服务时,我得到了一个java.lang.IncompatibleClassChangeError:实现类。我四处搜索并意识到,球衣1.14取决于asm 3.1和谷歌应用程序引擎使用asm 4.0并意识到我必须使用JarJar打包依赖关系来解决这个问题,但我不知道如何做到这一点与JarJar。我发现的教程非常神秘,面向体验程序员。所以有人可以发布一个面向初学者的教程,或者指导我完成解决这个问题的步骤。
答案 0 :(得分:10)
嗯,这是一个很晚的答案,但如果有人穿过它可能会有所帮助。我将举一个例子并解释一下。 jarjar可用于重新打包java库。它可用于更改名称空间,例如org.apache.common.codec需要更改为some_random_name.org.apache.common.codec。从jarjar download site下载jarjar以后粘贴你想要更改的jar文件(myinjar.jar)并将jarjar下载到一个文件夹中并在myrules.txt中运行此命令java -jar jarjar-1.4.jar process myrules.txt myinjar.jar myoutjar.jar
添加这些行
rule org.apache.commons.codec.** some_random_name.org.apache.commons.codec.@1
输出myoutjar.jar将保存到同一文件夹中,您可以在项目中使用它而不会发生任何冲突
答案 1 :(得分:0)
您可以使用jdk的jar命令来解压缩并合并jar文件。
jar -xvf firstjar.jar ....它将提取jar类文件夹/ package wise -com / pak1 / pak2
现在同样提取第二个jar并合并两个扩展文件夹
不,你可以创建一个合并的类文件罐
jar -cvf mergedjar.jar [folders name [ex com org ...]] ,详细信息请查看jar命令的工作原理。