- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
是否可以从默认包中移动 jar 中的 .class 文件到另一个命名的包,以便我可以导入和使用它们?
在这里浏览其他问题后,我认为 jarjar 可能正是我要找的,但我不知道如何使用它。
所以我的问题是如何使用 jarjar 将 .class 文件从默认包重新打包到另一个命名包?
编辑:我想澄清一些事情——我没有我想重新打包的 jar 的来源,所以我不知道如何重新编译代码。混淆和反射(reflection)是不可能的。
EDIT2:使用 jarjar 看起来非常简单 :)java -jar jarjar.jar 进程 rules.rules in.jar out.jar
rules.rules 看起来像这样:规则a net.ylivay.src.a
问题解决了!
最佳答案
要将类移动到不同的包中,您不仅需要更改它们在 jar(或文件系统)目录结构中的位置,还需要更改源文件中的 package
声明,然后重新编译类。
与其尝试重新打包 jar,不如看看 Eclipse 等 IDE 中提供的功能强大的重构工具,它们可以使此类事情变得简单。但是既然你说(在更新你的问题时)你没有源文件,那是不可能的。
另一种方法是创建代理类,使用反射在默认包中调用您需要的代理类。但这不仅令人不快,而且您还说反射(reflection)是不可能的。
所以你不能做你想做的。
关于java - 如何使用 jarjar 从默认包中重新打包 .class 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8182273/
我正在使用 Google 的 jarjar 将依赖项重新打包到我的应用程序的 fat jar 中。在运行重新打包的 jar 时,我得到 NoClassDefFoundError 例如: Excepti
我无法从命令行使用 jarjar 将简单的 Scala 程序与 Scala 运行时库结合起来。 jarjar 正确检测依赖关系: $ java -jar ~/Desktop/saug/jarjar-1
我想知道如何运行 JarJar使用 Ant,通过外部规则文件传递规则。 1) 我知道我可以按照下面的规则一一通过: 2) 如果我从命令行运行它,
我已将网络应用程序部署到 Google 应用引擎,我的网络服务使用 jersey 1.14 框架。当我尝试在 GAE 上使用或调用 Web 服务时,我得到一个 java.lang.Incompatib
ninja 构建添加了无效选项 --jarjar。任何指针如何解决这个问题。 以下是错误详细信息: cd ../../ui/gfx; ../../base/android/jni_generator/
是否可以从默认包中移动 jar 中的 .class 文件到另一个命名的包,以便我可以导入和使用它们? 在这里浏览其他问题后,我认为 jarjar 可能正是我要找的,但我不知道如何使用它。 所以我的问题
我正在尝试从源代码构建 AOSP(经过一些修改)但我的构建停止了 [ 0% 1/35196] JarJar: out/target/common/obj/JAVA_LIBRARIES/conscry
我似乎找不到关于如何使用 JarJar 的任何明确说明有一个 Android 项目。 我有一个场景,我的应用程序项目依赖于两个独立的库,它们都恰好使用相同的外部 .jar 文件。如果我尝试编译应用程序
一直让我对 maven-assembly-plugin 感到疑惑的是 jar-with-dependencies example file在 apache 网站上有关于 jarjar 格式的 TODO
我是一名优秀的程序员,十分优秀!