1

我正在使用 Android Studio 2.1.2 开发一个 Android 应用程序。

在一个外部库(特别是 IBM Bluemix 的 Watson 库com.ibm.watson.developer_cloud:java-sdk:3.0.1)的一个类中,我需要导入这三个类:

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

问题是这些输入是不可能的(无法解析符号)。这是我的场景:

安卓.jar

rt.jar

当我尝试导入 javax 包时,我只看到android.jar中的包(crypto、microedition、net、security、sql、xml)。例如,我没有看到rt.jar中的类,因此我不能使用javax.naming包中存在的类。

我试图以这种方式显式添加依赖项

compile files ('C:/Program Files/Java/jdk1.8.0_77/jre/lib/rt.jar')

但我认为这是不正确的,实际上它可以编译但由于此错误我无法在设备上运行:

Error:Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_77\bin\java.exe'' finished with non-zero exit value 1

这与我在这篇文章中遇到的问题相同:Javax content not accessible,但这次问题与请求导入的特定 Watson 库无关。

使应用程序工作的类可见的方法是什么?

4

1 回答 1

4

您不能rt.jar与 Android 应用程序一起使用(并且在某种程度上与 重叠android.jar)。那是桌面 JRE 的运行时库,而不是 Android。请参阅Android API 参考以获取可用包的列表(您会注意到这javax.naming不是其中之一。

很明显,IBM 框架与 Android 不兼容。

我之前的评估是不准确的,因为 README 明确指出它是:

该库支持 Android 2.3 及更高版本。对于 Java,最低要求是 1.7。这取决于 OkHttp 和 gson。

资源。

但是,我怀疑该问题与错误配置的凭据有关(请参阅此处)导致库尝试 JNDI 查找作为后备(Android 绝对支持)。

于 2016-06-12T20:27:38.087 回答