Android Studio-Android.jar和rt.jar冲突

Android Studio-Android.jar和rt.jar冲突,android,android-studio,libraries,ibm-watson,rt.jar,Android,Android Studio,Libraries,Ibm Watson,Rt.jar,我正在用AndroidStudio 2.1.2开发一个Android应用程序 在外部库的一个类(特别是IBM Bluemix的Watson库,com.IBM.Watson.developer\u cloud:java sdk:3.0.1)中,我需要导入以下三个类: import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; 问题是这些导入不可能(无法解

我正在用AndroidStudio 2.1.2开发一个Android应用程序

在外部库的一个类(特别是IBM Bluemix的Watson库,
com.IBM.Watson.developer\u cloud:java sdk:3.0.1
)中,我需要导入以下三个类:

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
问题是这些导入不可能(无法解析符号)。这是我的设想:


当我尝试导入javax包时,我只看到android.jar中的包(加密、微环境、网络、安全、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
这和我在这篇文章中遇到的问题是一样的:,但这次这个问题与请求导入的特定Watson库无关


如何使类可见以使应用程序工作?

您不能将
rt.jar
用于Android应用程序(并且与
Android.jar
有些重叠)。这是桌面JRE的运行库,而不是Android。请参阅以获取可用包的列表(您会注意到,
javax.naming
不是其中之一)

显然,IBM框架与Android不兼容

我之前的评估不准确,因为自述文件明确指出:

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


但是,我怀疑这个问题与错误配置的凭据(请参阅)有关,导致库随后尝试将JNDI查找作为回退(Android肯定不支持此功能)。

“我没有看到rt.jar中的类,因此我无法使用javax.naming包中的类,例如”--这是因为它们不是Android的一部分。您编译的
Android.jar
是一系列存根,足以满足编译器的要求。该jar的真正等价物是Android固件的一部分,并在运行时加载到您的进程中。这些类都没有。看看是否有不同版本的Bluemix that是Android兼容的。如果你找不到Android库,你可以制作一个Java Web服务器来运行你的IBM产品,并拥有Android设备调用方法。谢谢你的帮助!我在接受的答案中也发表了评论,对问题做了补充说明。谢谢你的澄清,我怀疑这是b但这在我脑海中并不清楚。在应用程序中,我使用的是支持Android的Java SDK:运行时出现的错误是:“找不到从com.ibm.watson.developer_cloud.util.CredentialUtils.getKeyUsingJNDI方法引用的类‘javax.naming.InitialContext’。”.这一部分应该适用于Android 2.3及更高版本,API调用是专门为Android使用而进行的…我不知道如何解决这个问题:/@Dieghitus我不认为Android支持JDNI,这是问题的根源。这更像是Java EEfeature@Dieghitus啊,我想我看到了问题所在。我愿意打赌(由于其他框架是这样工作的)您没有在属性文件中正确配置凭据,因此它试图通过其他方式(JNDI就是其中之一)查找凭据。但是,Android不支持此操作。有关如何正确配置凭据的说明,请参阅。感谢您提供的提示。我只在视觉识别服务中发现了此问题,其他所有问题都很好。我将在明天解决此问题,我希望能解决。我将在此处撰写新闻。谢谢!我已尝试解决此问题,但未成功。它来自t他更新了2.7.0,这一错误不仅出现在我身上,也出现在其他用户身上,正如你在Bluemix论坛的其他讨论中所看到的:这一错误是否可能是由设备的版本(Android 4.4)引起的?其他用户在4.4上也有这个问题。我已经尝试了各种方式,但没有做任何事情。。。