java - 使用 JarJar 重新打包工具

标签 java google-app-engine jersey

我已将网络应用程序部署到 Google 应用引擎,我的网络服务使用 jersey 1.14 框架。当我尝试在 GAE 上使用或调用 Web 服务时,我得到一个 java.lang.IncompatibleClassChangeError: Implementing 类。我四处搜索并意识到 jersey 1.14 依赖于 asm 3.1 而 google app engine 使用 asm 4.0 并且意识到我必须使用 JarJar 来打包依赖项来解决这个问题但我不知道如何做到这一点与 jar jar 。我发现的教程非常隐晦,适合经验丰富的程序员。所以有人可以发布适合初学者的教程,或者引导我完成解决此问题的步骤。

最佳答案

好吧,这是一个很晚的答案,但如果有人路过可能会有所帮助。我将举一个例子来解释这一点。 jarjar 可用于重新打包 java 库。它可用于更改命名空间,例如 org.apache.common.codec 需要更改为 some_random_name.org.apache.common.codec。从 jarjar download site 下载 jarjar稍后将要更改的 jar 文件 (myinjar.jar) 和下载的 jarjar 粘贴到一个文件夹中,然后运行此命令 java -jar jarjar-1.4.jar process myrules.txt myinjar.jar myoutjar.jar myrules.txt 添加这些行

rule org.apache.commons.codec.** some_random_name.org.apache.commons.codec.@1

输出的 myoutjar.jar 将被保存到同一个文件夹中,您可以在您的项目中使用它而不会产生任何冲突

关于java - 使用 JarJar 重新打包工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12612726/

相关文章:

java - REST with JAX-RS - 处理长时间运行的操作

java - RealmModel 实现类需要仅通过 getter/setter 使用的字段吗?

java - 十六进制编辑 Java 字节码抛出 ClassFormatError

javascript - 如何在每个具有多个 vCPU 的多个 Google App Engine 实例之间共享缓存?

node.js - 谷歌应用引擎: 502 Bad Gateway only on POST requests

java - Jersey 网络服务器中的 Spring 注入(inject)错误

Java Jersey 如何阻止loggingFilter打印?

java - JAXWS 和 session

java - 错误 EJB 计时器服务不可用。应用定时器不会被删除

java - Java 8 迁移后性能急剧下降(Google App Engine)