【问题标题】:Error - Didn't find class "javax.naming.ldap.LdapName"错误 - 找不到类“javax.naming.ldap.LdapName”
【发布时间】:2015-06-20 15:07:02
【问题描述】:

我正在使用 unirest 来获取 camfind 结果。

完整的错误日志:

04-14 18:24:39.574    1880-2300/projectco.project E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-120
Process: projectco.project, PID: 1880
java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/naming/ldap/LdapName;
        at com.mashape.relocation.conn.ssl.AbstractVerifier.extractCNs(AbstractVerifier.java:277)
        at com.mashape.relocation.conn.ssl.AbstractVerifier.getCNs(AbstractVerifier.java:265)
        at com.mashape.relocation.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:157)
        at com.mashape.relocation.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:140)

[...] 更多“在”s

at bookshotco.bookshot2.MainActivity$1.run(MainActivity.java:100)
        at java.lang.Thread.run(Thread.java:818)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "javax.naming.ldap.LdapName" on path: DexPathList[[zip file "/data/app/projectco.project-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)

[..]

Suppressed: java.lang.ClassNotFoundException: javax.naming.ldap.LdapName
        at java.lang.Class.classForName(Native Method)
        at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
        at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
        ... 23 more
 Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

很少有人遇到这个问题,解决它的人更少,大多数时候使用的东西与不同版本的兼容性有关,这对我不起作用。

我使用的模拟器是最新的(api 21 上的nexus 5)。

【问题讨论】:

  • 嗯,the Android SDK 中不存在该类。由于该库显然尚未在 Android 上使用,因此您最好找到一个具有该库的库。
  • 问题是它是unirest api使用的库,有没有办法将一些jar文件链接到项目?我在哪里可以下载它?
  • 我会强烈建议您使用适用于 Android 的库。我们有很多这样的库for general HTTPREST requests specifically
  • 我想我必须这样做,我会选择改造,因为这是我在改用 unirest 之前想要选择的。谢谢好先生!
  • 你昨天不是问过同样的问题吗?有人做过。现已删除。

标签: java android android-studio noclassdeffounderror unirest


【解决方案1】:

我最近遇到了同样的问题,而且它只发生在经过混淆的代码中。所以将整个 org.apache 包保留在 Proguard 规则中解决了这个问题。

# Keep Apache Package, since it cannot find some of the classes and throws Verify Error
-keep class org.apache.** {*;}

【讨论】:

  • 像魅力一样工作。
【解决方案2】:

此错误也可能是由于在连接到远程服务器时需要 ssl(即“useSSL”)并且没有如下定义的 verifyServerCertificate 和 trustServerCertificate 以及没有正确定义服务器证书而导致的。系统正在尝试使用 LDAP 身份验证过程,因此出现错误。

val info = Properties()
info.setProperty("useSSL", "true")
info.setProperty("requireSSL", "true")
info.setProperty("user", user)
info.setProperty("password", password)
info.setProperty("verifyServerCertificate", "false")
info.setProperty("trustServerCertificate", "true")

另外,如果你定义:

trustServerCertificate=false

那么您可能需要设置以下内容(除非一切都匹配):

disableSslHostnameVerification=true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-21
    • 2012-04-18
    • 2019-01-05
    • 2013-07-18
    • 2023-04-05
    • 2018-12-19
    • 2015-01-11
    • 1970-01-01
    相关资源
    最近更新 更多