Java 重新打包.jar文件

Java 重新打包.jar文件,java,android,ant,jar,jarjar,Java,Android,Ant,Jar,Jarjar,我需要将JRE7库中的一些JAR添加到我的Android项目中。但例如,rt.jar与Adroid 2.2 SDK中的android.jar冲突,因此我得到以下错误: 核心类(java.*或javax.*)的错误用法 当不构建核心库时 这通常是由于无意中包含了核心库文件 在应用程序的项目中,当使用IDE(例如 月食)。如果您确定您不是有意定义 核心类,那么这是对 继续 然而,实际上您可能正在尝试在核心中定义一个类 命名空间,例如,您可能已获取的源, 来自非Android虚拟机项目。这将是最重要的

我需要将JRE7库中的一些JAR添加到我的Android项目中。但例如,
rt.jar
与Adroid 2.2 SDK中的
android.jar
冲突,因此我得到以下错误:

核心类(java.*或javax.*)的错误用法 当不构建核心库时

这通常是由于无意中包含了核心库文件 在应用程序的项目中,当使用IDE(例如 月食)。如果您确定您不是有意定义 核心类,那么这是对 继续

然而,实际上您可能正在尝试在核心中定义一个类 命名空间,例如,您可能已获取的源, 来自非Android虚拟机项目。这将是最重要的 肯定不行。至少,这会危害到整个社会 应用程序与平台未来版本的兼容性。 它的合法性也常常令人怀疑

如果您真的打算构建一个核心库,那么 作为创建完整虚拟机的一部分适当 分发,而不是编译应用程序--然后使用 “--core library”选项以抑制此错误消息

如果您继续使用“-core library”,但实际上 构建应用程序,然后预先警告您的应用程序 在某个时候仍然无法构建或运行。请 为愤怒的客户做好准备,例如,他们发现 一旦他们升级了操作系统,应用程序就会停止运行 系统。这个问题要怪你

如果您合法地使用某个代码,而该代码恰好位于 核心包,那么最简单安全的选择就是 重新打包该代码。也就是说,将有问题的类移动到 您自己的包名称空间。这意味着他们将永远不会在这里 与核心系统类冲突。JarJar是一个可能有帮助的工具 在这项努力中,我将向你表示感谢。如果你发现你不能这样做,那么 这表明你所走的道路最终会改变 导致痛苦、痛苦、悲伤和哀叹

我知道有好几条关于它的线索,比如,或者可能对我有好处。但我不知道如何让它们发挥作用,而且文档也没有(对我来说)真正说明这一点。我猜他们使用Ant命令,但我一直使用Eclipse内置生成器,现在我不知道如何使用Ant和上面提到的任何命令

所以我的问题是:如何重新打包这个rt.jar,以便在我的Android项目中编译它

谢谢大家!

编辑:

好的,所以我想要实现的是创建一个.jar,它可以在开发Android应用程序时使用(简化一些功能,其实并不重要)。但我也希望能够将同样的.jar添加到标准Java项目中,以便使用其中的一些函数。它看起来是这样的:
任何编写应用程序的人都会将这个.jar添加到他的Java项目->它使他能够生成某些文件(需要internet来完成)->这些生成的文件然后添加到Android项目->以后,当有人使用这个Android应用程序时,这些文件提供了某些功能而不使用internet(离线)在任何项目中这样做都是不明智的,即使这是可能的。您将面临大量的类不兼容和加载问题。但在任何情况下,这都无关紧要,因为核心Java库在您的归档文件被触及之前就已经被加载了,因此任何覆盖它们的尝试都是毫无意义的

更不用说Android正在使用它自己的JVM实现,它与JDK 6不完全兼容(忘记JDK 7)。还请注意,将核心Java库与代码打包可能会侵犯版权,并且可能会更改许可选项(IANAL)


您需要找到另一种方法来解决您遇到的任何问题(您在问题中没有提到)。

有许多JAR在Android和经典Java上都能很好地工作。没有一个涉及到让Android开发者盗版
rt.jar
。坚持使用Android SDK和您支持的任何java级别中存在的
java.*
javax.*
类,您的JAR在这两种环境中都能正常工作。

理想情况下,您应该避免使用此类.JAR文件,但如果必须,您可以将它们添加到构建路径中。但这有时会导致冲突,就像你现在面临的那样。要解决此类冲突,您需要做的是:

  • 在构建路径中添加jar
  • 选中“参考库”。jar文件应该出现在同一个目录下
  • 一旦它具有引用库下的功能,请检查“android依赖项”虚拟目录。如果您看到这里也有一个相同jar文件的实例,那么您应该删除“android依赖项”文件夹。(相信我,这不会以任何方式影响您的项目)
  • 这样做之后,您应该能够编译代码,而不会产生任何进一步的冲突

  • 快乐编码…)

    您确实不应该将JRE中的
    rt.jar
    包含到android项目中。你的核心Android SDK无法实现的功能是什么?相关问题:这也将侵犯版权,除非你使用开源JDK(例如,
    OpenJDK
    ),并且愿意根据其条款(例如,GPL)许可你的代码。@commonware-另一个优点,如果你不介意的话,我会补充我的答案。我更新了你要求的信息。我希望现在更清楚了。关于版权,我是一名学生,这个应用程序将永远不会被许可或类似的东西-我这样做只是为了学习一些东西。@commonware And Perception:如果你对如何实现这样的目标有任何想法,请告诉我。