我需要将 JRE7 库中的一些 jar 添加到我的 Android 项目中。但例如rt.jar
与以下内容相冲突android.jar
来自 Adroid 2.2 SDK,所以我收到此错误:
不明智或错误地使用核心类(java.* 或 javax.*)
当不构建核心库时。
这通常是由于无意中包含了核心库文件造成的
在您的应用程序项目中,当使用 IDE(例如
蚀)。如果您确定您不是有意定义
核心类,那么这是最有可能的解释
正在进行中。
然而,您实际上可能试图在核心中定义一个类
名称空间,您可能已获取其来源,例如,
来自非 Android 虚拟机项目。这将最
肯定不行。至少,它会危及
您的应用程序与平台未来版本的兼容性。
它的合法性也常常受到质疑。
如果你真的打算构建一个核心库——这只是
适合作为创建完整虚拟机的一部分
分发,而不是编译应用程序——然后使用
“--core-library”选项可以抑制此错误消息。
如果您继续使用“--core-library”,但实际上
构建一个应用程序,然后预先警告您的应用程序
在某些时候仍然无法构建或运行。请
为愤怒的客户做好准备,例如,他们发现您的
一旦升级操作,应用程序将停止运行
系统。你将要为这个问题负责。
如果您合法地使用恰好位于
core 包,那么你拥有的最简单安全的替代方案是
重新打包该代码。也就是说,将有问题的类移动到
你自己的包命名空间。这意味着他们永远不会在
与核心系统类冲突。 JarJar 是一个可能有帮助的工具
你在这一努力中。如果您发现自己无法做到这一点,那么
这表明你所走的道路最终将
导致痛苦、痛苦、悲伤和哀叹。
我知道有很多关于它的话题,比如JarJar http://code.google.com/p/jarjar/, OneJar http://one-jar.sourceforge.net/ or FatJar http://fjep.sourceforge.net/可能对我有好处。但我不知道如何使它们中的任何一个工作并且文档并没有真正说明(对我来说)。我猜他们使用 Ant 命令,但我一直使用 Eclipse 内置构建器,现在我不知道如何使用 Ant 或上面提到的任何命令。
所以我的问题是:如何重新打包这个 rt.jar 以便我可以在我的 Android 项目中编译它?
谢谢你!
EDIT:
好的,所以我想要实现的是创建一个.jar,它可以在开发Android应用程序时使用(简化一些功能,并不重要)。但我还希望能够将相同的 .jar 添加到标准 Java 项目中,以便也使用其中的一些功能。它看起来像这样:
无论谁编写应用程序,都会将此 .jar 添加到他的 Java 项目中 -> 它使他能够生成某些文件(需要互联网才能完成) -> 然后将这些生成的文件添加到 Android 项目中 -> 稍后,当有人使用此 Android 时应用程序中,这些文件无需使用互联网(离线)即可提供某些功能。
即使有可能,在任何项目中这样做都是不明智的。您将使自己面临大量的类不兼容和加载问题。但无论如何,这都无关紧要,因为核心 Java 库在您的档案被触及之前就已加载,使得任何此类覆盖它们的尝试都毫无意义。
更不用说 Android 使用自己的 JVM 实现,该实现与 JDK 6 不完全兼容(忘记 JDK 7)。另请注意,将核心 Java 库与代码打包在一起可能会侵犯版权,并且可能会更改您的许可选项 (IANAL)。
您需要找到另一种方法来解决您遇到的任何问题(您在问题中没有提及)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)