【问题标题】:Not able to include jndi.jar file in android project build path无法在 android 项目构建路径中包含 jndi.jar 文件
【发布时间】:2011-02-17 09:48:26
【问题描述】:

我需要在 Android 应用程序中对我的用户进行 LDAP 身份验证,同样我正在使用 JNDI 查找方法并且需要在我的构建路径中包含 JNDI.jar,但 android 不允许我这样做并抛出以下错误

[2011-02-17 15:08:33 - DHCAndroid]:Dx 故障处理 “javax/naming/Au​​thenticationException.class”:

在以下情况下对核心类(java.* 或 javax.*)的不明智或错误使用 不构建核心库。

这通常是由于无意中包含了核心库文件 您的应用程序的项目,当使用 IDE(例如 Eclipse)时。如果 你确定你不是故意定义一个核心类,那么这个 是对正在发生的事情的最可能的解释。

但是,您实际上可能正在尝试在核心中定义一个类 命名空间,您可能已经获取了它的来源,例如,从 非安卓虚拟机项目。这肯定不会 工作。至少,它会危害您的应用程序与 平台的未来版本。它也经常是有问题的 合法性。

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

如果您继续使用“--core-library”,但实际上是在构建一个 应用程序,然后预先警告您的应用程序仍然会失败 在某个时候构建或运行。请为愤怒的顾客做好准备 例如,他们发现您的应用程序停止运行一次 他们升级他们的操作系统。你将为此负责 问题。

如果您合法地使用某些恰好位于核心中的代码 包装,那么您拥有的最简单安全的替代方法是重新包装 那个代码。也就是说,将有问题的类移动到您自己的包中 命名空间。这意味着它们永远不会与核心冲突 系统类。 JarJar 是一个可以帮助您完成这项工作的工具。 如果你发现你不能做到这一点,那么这表明你 你所走的道路最终会导致痛苦、苦难、悲伤, 和悲叹。

[2011-02-17 15:08:33 - DHCAndroid]:Dx1 错误;流产 [2011-02-17 15:08:33 - DHCAndroid] 转换为 Dalvik 格式失败,出现错误 1

一旦我移除 jar,错误就会消失,移除 jar 不是一种选择,请帮助解决方法

问候, Smriti Garg

【问题讨论】:

    标签: android


    【解决方案1】:

    然后,找到另一个 LDAP 库,它不在 javax 命名空间中。你想用这个 JAR 做什么是不可能的。

    【讨论】:

      【解决方案2】:

      将dex参数--core-library添加到[ANDROID_SDK]\platform-tools\dx.bat。

      将 dx.bat 的 ~59 行:'set params=' 更改为 'set params=--core-library'

      这使得 Android 构建过程允许包含 javax pacakges。

      【讨论】:

        【解决方案3】:

        就像错误信息说的那样:

        将相关类移动到您自己的包命名空间中。 [...] JarJar 是一个可以帮助您完成这项工作的工具。

        使用 JarJar 将 JNDI 代码重新打包到您自己的命名空间中。然后改用你的新 jar。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-07-11
          • 1970-01-01
          • 2015-05-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多