无法在android项目构建路径中包含jndi.jar文件

时间:2011-02-17 09:48:27

标签: android

我需要在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

3 个答案:

答案 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代码重新打包到您自己的命名空间中。然后依靠你的新罐子。