重新打包.jar文件

时间:2012-04-25 12:10:25

标签: java android ant jar jarjar

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

  

错误使用或错误使用核心类(java。*或javax。*)   什么时候没有建立核心库。

     

这通常是由于无意中包含核心库文件   在您的应用程序的项目中,使用IDE(例如   日食)。如果你确定你不是故意定义一个   核心类,那么这就是最可能的解释   继续。

     

但是,您实际上可能正在尝试在核心中定义类   命名空间,例如,您可能采用的来源   来自非Android虚拟机项目。这将是最多的   肯定不行。它至少会危害它   您的应用与该平台的未来版本的兼容性。   它的合法性通常也是有问题的。

     

如果你真的打算建立一个核心库 - 这只是   适合作为创建完整虚拟机的一部分   分发,而不是编译应用程序 - 然后使用   “--core-library”选项可以禁止显示此错误消息。

     

如果您继续使用“--core-library”,但事实上   构建应用程序,然后预先警告您的应用程序   在某些时候仍然无法建立或运行。请   为愤怒的顾客做好准备,例如找到你的   应用程序在升级其运行后停止运行   系统。你应该为这个问题负责。

     

如果您合法地使用了恰好位于的某些代码   核心包,那么你最简单的安全选择就是   重新包装那段代码。也就是说,将有问题的类移到   你自己的包命名空间。这意味着他们永远不会进入   与核心系统类冲突。 JarJar是一个可能有用的工具   你在这努力。如果你发现你不能这样做,那么   这表明你所处的道路最终将成为现实   导致痛苦,痛苦,悲伤和悲伤。

我知道有几个关于它的主题,JarJarOneJarFatJar之类的内容可能对我有好处。但我不知道如何使它们中的任何一个工作,文档并没有真正说清楚(对我来说)。我猜他们使用Ant命令,但我一直使用Eclipse内置构建器,现在我不知道如何既不使用Ant也不使用上面提到的任何一个。

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

谢谢!

修改

好的,所以我想要实现的是创建一个.jar,它可以在开发Android应用程序时使用(简化一些功能,并不重要)。但我也希望能够将相同的.jar添加到标准Java项目中,以便在那里使用一些函数。它看起来像这样: 编写应用程序的人将此.jar添加到他的Java项目中 - >它使他能够生成某些文件(需要互联网才能完成) - >然后将这些生成的文件添加到Android项目中 - >稍后,当有人使用这个Android应用程序时,这些文件提供某些功能而不使用互联网(离线)。

2 个答案:

答案 0 :(得分:3)

在任何项目中都这样做是不明智的,即使有可能。您将面临丰富的类不兼容和加载问题。但无论如何它甚至都不重要,因为核心Java库在你的档案被触及之前就被加载了,这使得任何这样的尝试都无法覆盖它们。

甚至没有谈到Android使用自己的JVM实现这一事实,这种实现与JDK 6不完全兼容(忘记了JDK 7)。另请注意,将核心Java库与您的代码打包在一起可能会侵犯版权,并且可能会更改您的许可选项(IANAL)。

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

答案 1 :(得分:0)

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