当前位置: 首页 > 知识库问答 >
问题:

使用JarJar重新包装工具

逄嘉木
2023-03-14

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

共有1个答案

宣弘新
2023-03-14

嗯,这是相当晚的答案,但如果有人穿过可能会有帮助。我将举一个例子来解释这一点。jarjar可用于重新打包java库。它可以用于更改命名空间,例如,org.apache.common.codec需要更改为some_random_name.org.apache.common.codec。从jarjar下载站点下载jarjar,然后将要更改的jar文件(myinjar.jar)和下载的jarjar粘贴到一个文件夹中,并运行以下命令java-jar jarjar-1.4.jar processmyrules.txtmyinjar.jar在myrules.txt中添加以下行

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

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

 类似资料:
  • jarjar (Jar Jar Links) 是一个用来帮助你重新将 Java 库打包到自己的 Java 发行包中,这样做的目的有两个: 你可以简单的提供一个单 jar 包无需依赖其他外部 jar 包 可避免依赖指定版本的的类库

  • 我手动安装了CakePHP(不是通过作曲家),我认为这是推荐的方式,因为它没有提到在CakePHP网站使用作曲家,有一个只是下载链接。安装后,我想安装DebugKit。我是否应该手动安装DebugKit,因为我手动安装了CakePHP?还是完全不相关? 首先,我对作曲家来说是个新手!但是我尝试了composer方式说明(因为这似乎是推荐的方式),并向CakePHP composer添加了以下几行代

  • 我想在laravel 5.8安装zizaco/委托包,在他们的github页面,据说包括"zizaco/委托":"5.2. x-dev"在composer.json文件和运行作曲家更新命令。我这样做如下,并运行作曲家更新命令。 但在安装zizaco/trust包时,composer update命令会将所有包更新为最新版本(这些包我包含在上面的“require”字段中)。所以,如果在最新更新的软件

  • 我的gradle构建挂在bootRepackage任务上。我的应用程序使用Gradle 2.14 Spring BootJava Gradle插件是 下面是我在gradle日志中看到的内容。bootRepackage任务执行受阻,没有错误: 执行的Gradle命令: 我添加了调试选项,但它没有给我任何额外的信息。请告诉我任何建议。

  • 我试图编译FFMPEG与我的Android应用程序。我已经查看了:https://github.com/halfninja/android-ffmpeg-x264,这几乎是我想要的,但我需要FFMPEG的更新版本(所以我尝试使用最新的2.2)。 我正在使用那里的大部分脚本,但问题是在运行compile_make_everything.sh之后,我试图运行ndk-build,但我得到了错误(基本上它

  • 现在php已经可以在你的应用中访问了, 是时候让它做⼀些事情了. 本章剩下的核心就是围绕着在这个测试应用框架中重新创建cli sapi展开的. 很简单, cli二进制程序最基础的功能就是在命令行指定⼀个脚本的名字, 由php对其解 释执行. 用下面的代码替换你的embed1.c的内容就在你的应用中实现了cli. #include <stdio.h> #include <sapi/embed/php