我需要在Android应用程序中对我的用户进行LDAP身份验证,因为我正在使用JNDI查找方法并且需要在我的构建路径中包含JNDI.jar,但是android不允许我这样做并抛出以下错误
[2011-02-17 15:08:33 - DHCAndroid]:Dx处理麻烦 “的javax /命名/ AuthenticationException.class”:
错误使用或错误使用核心类(java。*或javax。*)时 没有建立核心库。
这通常是由于无意中包含了一个核心库文件 应用程序的项目,使用IDE(例如Eclipse)时。如果 你确定你不是故意定义一个核心类,那么这个 是最有可能解释发生了什么。
但是,您实际上可能正在尝试在核心中定义类 命名空间,例如,来自a的源代码 非Android虚拟机项目。这肯定不会 工作。它至少会危害您的应用与您的兼容性 该平台的未来版本。它也常常值得怀疑 合法性。
如果你真的打算建立一个核心库 - 这只是 适合作为创建完整虚拟机分发的一部分, 而不是编译应用程序 - 然后使用 “--core-library”选项可以禁止显示此错误消息。
如果你继续使用“--core-library”但实际上正在构建一个 应用程序,然后预先警告您的应用程序仍将失败 在某些时候建立或运行。请为愤怒的顾客做好准备 例如,谁发现你的申请不再运作一次 他们升级他们的操作系统。你应该为此负责 问题
如果您合法地使用恰好位于核心中的某些代码 包装,那么最简单的安全替代方案就是重新包装 那段代码。也就是说,将有问题的类移动到您自己的包中 命名空间。这意味着它们永远不会与核心发生冲突 系统类。 JarJar是一个可以帮助您完成这项工作的工具。 如果你发现你不能这样做,那就表明了这一点 你所走的道路最终将导致痛苦,痛苦,悲伤, 和悲伤。
[2011-02-17 15:08:33 - DHCAndroid]:Dx1错误;流产[2011-02-17 15:08:33 - DHCAndroid]转换为Dalvik格式失败,错误1
一旦我移除了罐子,错误就消失了,取出罐子不是一个选择,请帮助你做到这一点
此致 Smriti Garg
答案 0 :(得分:0)
找到另一个LDAP库,然后找到一个不在javax
命名空间中的库。你想用这个JAR做什么是不可能的。
答案 1 :(得分:0)
将dex参数--core-library添加到[ANDROID_SDK] \ platform-tools \ dx.bat。
更改dx.bat的第59行:'set params ='到'set params=--core-library'
这使Android构建过程允许包含javax pacakges。
答案 2 :(得分:0)
如错误消息所示:
将有问题的类移动到您自己的包命名空间中。 [...] JarJar是一个可以帮助您完成这项工作的工具。
使用JarJar将JNDI代码重新打包到您自己的命名空间中。然后依靠你的新罐子。