问题标签 [jarjar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2312 浏览

java - 如何在android gradle中使用jarjar

我正在尝试将一些 java 代码导入到 android。问题是我有

当我尝试运行我得到的项目时

我试图找到一些适用于 android gradle 的 jarjar 使用示例,但找不到。我只是偶然发现了死胡同。没有回应的问题

我确实知道文件名与我的外部库中具有 javax/xml/crypto/* 的 java1.8 的 rt.jar 冲突。谁能指导我。

0 投票
1 回答
932 浏览

maven - 使用 Maven-JarJar 插件

我正在尝试使用 Maven JarJar 插件,但我遇到了问题。我想要做的是将杰克逊图书馆作为我的“jar-with-dependcies”的一部分。

由于找不到帮助,我试图猜测配置。你能看看并告诉我我做错了什么吗?

这是配置:

编译时,我收到以下消息:

我会感谢你的帮助!

0 投票
1 回答
2101 浏览

aspectj - Aspectj 在类重定位后抛出“org.aspectj.weaver.BCException: malformed org.aspectj.weaver.PointcutDeclaration attribute”异常

我在我正在进行的项目中使用 AspectJ。作为项目的一部分,我试图使用“maven-shade-plugin”和“jarjar-maven-plugin”来将类从一个 jar 重新定位到另一个。

在这两种情况下,当我尝试使用生成的 JAR 时,AspectJ 都失败了,出现以下异常:

如果您能指出我做错了什么,我将不胜感激。

谢谢,纳达夫

0 投票
1 回答
2464 浏览

jackson - 将 fastxml.jackson 类重新定位到 my.package.fastxml.jackson

我正在尝试将包从“com.fasterxml.jackson”重新定位到我自己的包中(即“mypackage.com.fasterxml.jackson”),然后在我拥有的另一个 JAR 中使用它。

我已经设法使用此配置运行 maven-shade 插件来执行此操作:

我面临的问题是当我尝试使用它时,由于某种原因,Eclipse 不断添加对原始杰克逊(“mypackage.com.fasterxml.jackson”)的依赖,而不是新的。

为了清楚起见,我的设置是: - Jar X 在 ThirdPartyArtifcats 中有依赖关系。- ThirdPartyArtifcats 引用 Jackson 并运行 maven-shade 插件,因此它包含 Jackson 的修改版本 (mypackage.com.fasterxml.jackson)。

当我尝试在 Jar X 中使用 Jackson 的 ObjectMapper 时,Eclipse 一直引用原始的 jackson。

我会感谢你的帮助!

0 投票
1 回答
774 浏览

android - 当有人使用我的android库时如何避免库冲突

我正在为 android 开发一个库,它将在许多应用程序中使用。该库依赖于其他一些库。例如,它使用 Dagger 1.2,因此如果包含我的库的应用程序将使用 Dagger 2.0,则项目将不会因为冲突而构建。我能做些什么?

我用这个工作区 gradle 尝试了 Jarjar

这是应用程序等级

这是我的图书馆毕业

0 投票
1 回答
1112 浏览

java - JarJar 没有重命名引用

我正在使用 Google 的 jarjar 将依赖项重新打包到我的应用程序的 fat jar 中。在运行重新打包的 jar 时,我得到NoClassDefFoundError例如:

我反编译了重新打包的 jar,发现 import 语句和我的代码中对依赖项的引用没有被重构。我哪里错了?

这是我运行 jarjar 的方式:

我在 repackageRules.txt 中列出的规则:

我的 build.gradle:

我试图检查 jarjar 是否正确使用检测类之间的依赖关系java -jar jarjar-1.4.jar find class myApp.jar

我的代码中的所有类都会出现这样的错误:Error reading com/company/Main.class: null

是什么导致了这个问题?

0 投票
0 回答
80 浏览

maven - 我可以使用 Maven Shade 插件在单个 jar 文件中重新定位类而不做其他任何事情吗?

我们有一个 Web 应用程序(用 java 编写,在 tomcat 中运行,仅部署在我们自己数据中心的几台服务器上 - 未重新分发)。我的任务是将我们的 webapp 依赖的第三方 jar 文件之一更新到最新版本。我们将当前版本的第三方库称为 foo1.jar,将新版本称为 foo2.jar。

我被要求编写使用新 jar 文件的代码,同时保留使用旧 jar 文件的现有代码。我们希望能够轻松地来回切换,以防万一我们认为升级存在问题。

问题是新版本与我们当前使用的版本不兼容。一些类和函数已经被删除,一些已经改变了签名等等。但是,很多类和函数没有改变。这意味着由于名称冲突,我们不能简单地将两个 jar 文件部署到我们的 lib 目录。

处理此问题的一种方法是将类重新定位到新包中。这个问题和答案中有一篇很好的文章,解释了如何使用JarJar 工具来执行此操作。

我提出的解决方案是将类从 com.foo 重新定位到 com.mycompany.com.foo1。我想从 foo1.jar 开始并生成 foo1-modified.jar,其中包含原始内容,但重新定位了指定的类。然后我会用 foo2.jar 做一些非常相似的事情,并部署两个修改后的 jar 文件。

但是,有人建议我应该使用 Maven Shade 插件而不是 JarJar 进行调查。(我以前从未使用过 Maven 或任何其他工具,所以请原谅我的无知。)Shade 似乎主要是为了解决一个稍微不同且更复杂的问题(关于将您的应用程序及其依赖项打包成一个jar 文件),但我想知道它是否可以满足我的需求。到目前为止,我还没有看到如何做到这一点的例子,但我想知道 Shade 是否适合这项任务?

0 投票
0 回答
17 浏览

java - Bazel 在 Apple Mac M1 上构建失败

运行 bazel run //api/deployment:mynamespace.apply 时遇到以下问题如果有人也遇到同样的问题,请告诉我。

Bazel 版本:- 4.2.1 处理器:- Apple Mac M1

错误:/private/var/tmp/_bazel_akashtyagi/e7d0288ce9b933c729b37bd014ecd495/external/bazel_tools/third_party/jarjar/BUILD:10:30:没有这样的目标'@remote_java_tools_darwin//:JarJar':目标'JarJar'未在包''定义中声明由 /private/var/tmp/_bazel_akashtyagi/e7d0288ce9b933c729b37bd014ecd495/external/remote_java_tools_darwin/BUILD 引用并由 '@bazel_tools//third_party/jarjar:jarjar_import' 引用