Я пытаюсь использовать org.apache.directory.api
для создания подключения к службе LDAP и запрашивать ее как часть приложения Spark. Код Scala для подключения и запроса LDAP работает должным образом, когда я использую его как часть приложения Java, но при выполнении как часть приложения Spark он выдает сообщение об ошибке, подобное этому:
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.directory.api.util.Strings.toLowerCaseAscii(Ljava/lang/String;)Ljava/lang/String;
at org.apache.directory.api.ldap.codec.api.DefaultConfigurableBinaryAttributeDetector.addBinaryAttribute(DefaultConfigurableBinaryAttributeDetector.java:166)
at org.apache.directory.api.ldap.codec.api.DefaultConfigurableBinaryAttributeDetector.setBinaryAttributes(DefaultConfigurableBinaryAttributeDetector.java:206)
at org.apache.directory.api.ldap.codec.api.DefaultConfigurableBinaryAttributeDetector.<init>(DefaultConfigurableBinaryAttributeDetector.java:133)
at org.apache.directory.ldap.client.api.LdapNetworkConnection.buildConfig(LdapNetworkConnection.java:599)
at org.apache.directory.ldap.client.api.LdapNetworkConnection.<init>(LdapNetworkConnection.java:410)
Исключение возникает в самый первый раз, когда я пытаюсь создать сетевое соединение:
val ldapConnection = new LdapNetworkConnection(endpoint, port, true)
В дереве зависимостей я вижу, что api-util
также является частью зависимости Spark, но в дерево помечено как опущенное из-за конфликта с моей версией - однако, поскольку эта банка предоставляется, я не уверен, загружается ли она первой, и поэтому моя зависимость игнорируется:
[INFO] +- org.apache.spark:spark-core_2.11:jar:2.3.0.cloudera2:provided
[INFO] | +- org.apache.hadoop:hadoop-client:jar:2.6.0-cdh5.13.3:provided
[INFO] | | +- org.apache.hadoop:hadoop-common:jar:2.6.0-cdh5.13.3:provided
[INFO] | | | +- org.apache.hadoop:hadoop-auth:jar:2.6.0-cdh5.13.3:provided
[INFO] | | | | +- org.apache.directory.server:apacheds-kerberos-codec:jar:2.0.0-M15:provided
[INFO] | | | | | +- (org.apache.directory.api:api-util:jar:1.0.0-M20:provided - omitted for conflict with 1.0.3)
Я не могу узнайте, почему этот вызов завершился бы методом, которого не существует, или в чем может быть ошибка. Любое предложение, как решить или отладить это?