我已经将一个Web应用程序部署到Google App Engine,并且我的Web服务使用jersey 1.14框架。当我尝试使用或调用GAE上的Web服务时,我得到了一个java.lang.IncompatibleClassChangeError:实现类。我四处搜索并意识到jersey 1.14依赖于asm 3.1,并且Google app引擎使用asm 4.0,并且意识到我必须使用JarJar打包依赖项才能解决此问题,但是我不知道如何执行此操作与JarJar。我发现的教程非常神秘并且适合经验丰富的程序员,因此有人可以发布适合初学者的教程,也可以指导我逐步解决该问题。

最佳答案

好吧,这是一个很晚的答案,但是如果有人经过可能会有所帮助。我将举一个例子并对此进行解释。 jarjar可用于重新打包Java库。它可以用于更改 namespace ,例如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将保存到同一文件夹中,您可以在项目中使用它而不会发生任何冲突

10-05 17:42