有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用JarJar重新打包工具的java

我已经将一个web应用程序部署到Google应用程序引擎,我的web服务使用jersey 1.14框架。当我试图使用或调用GAE上的web服务时,我得到了一个java。lang.CompatibleClassChangeError:实现类。我四处搜索,发现jersey 1.14依赖于asm 3.1,google app engine使用asm 4.0,并意识到我必须使用JarJar打包依赖项来解决这个问题,但我不知道如何使用JarJar实现这一点。我发现的教程非常神秘,面向有经验的程序员。所以,有人可以发布一个面向初学者的教程,或者带我完成解决这个问题的步骤


共 (2) 个答案

  1. # 1 楼答案

    您可以使用jdk的jar命令来提取和合并jar文件
    jar-xvf firstjar。jar。。。。它将提取jar classes文件夹/package-wise-com/pak1/pak2
    现在,提取第二个jar并合并两个扩展文件夹
    不,您可以创建一个包含合并类文件的jar
    jar-cvf mergedjar。jar[文件夹名称[ex-com组织…]],有关详细信息,请查看jar命令的工作方式

  2. # 2 楼答案

    这是一个很晚的答案,但如果有人路过可能会有帮助。我将举一个例子来解释这一点。jarjar可用于重新打包java库。它可以用于更改名称空间,例如org。阿帕奇。常见的编解码器需要更改为某个随机名称。组织。阿帕奇。常见的编解码器。从jarjar download site下载jarjar,然后将要更改的jar文件(myinjar.jar)粘贴到一个文件夹中,并在myrules中运行这个命令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将被保存到同一个文件夹中,您可以在项目中使用它,而不会产生任何冲突