无法访问Javax内容

时间:2016-03-25 09:22:38

标签: java android import ibm-watson verifyerror

当我尝试运行我的Android应用程序时,由于导入了允许我使用Watson服务的此程序包,我遇到了运行时错误。

' com.ibm.watson.developer_cloud:java的SDK:2.9.0'

事实上,当我使用与此软件包相关的内容时,出现的错误是:

E/dalvikvm: Could not find class 'javax.naming.InitialContext', referenced from method com.ibm.watson.developer_cloud.util.CredentialUtils.getKeyUsingJNDI

和相应的堆栈跟踪是:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: semantic.myapplication, PID: 29120
java.lang.VerifyError: com/ibm/watson/developer_cloud/util/CredentialUtils
at….

我已经找到了这个错误的真正问题,我发现在出现错误的文件“CredentialUtils.java”中,这三个输入无法识别(无法解析符号):

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

我使用Android Studio和最新版本的jdk(1.8.0.77)。这些java文件存在,我可以看到它们但由于某些原因无法访问:无法在javax.naming(以及其他文件夹)中导入每个文件。

我该如何解决这个问题?我试图导入包含javax.naming类的.jar文件,但是不起作用。有没有办法让这些类可见?

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

我认为您使用的是早于2.7.1的版本。我无法重现您的问题,我尝试了不同的配置,包括您的。 确保清理工作区并获取最新版本的库。 在您的build.gradle中,您应该:

compile 'com.ibm.watson.developer_cloud:java-sdk:2.9.0'

以下是解决您问题的commit。该修补程序已在2.7.1版本中发布。

这就是我所做的,对我有用:

您应该在Android中使用Watson API的步骤:

  1. 下载并安装Android Studio
  2. 打开Android Studio
  3. File > New > New Project
  4. 选择一个名称,然后点击nextnextnextFinish
  5. <project-name>/app/build.gradle添加:

    compile 'com.ibm.watson.developer_cloud:java-sdk:2.9.0'  
    
  6. MainActiviy.javaonCreate(...)添加:

    Thread thread = new Thread(new Runnable(){
      @Override
      public void run() {
        try {
          SpeechToText service = new SpeechToText();
          service.setUsernameAndPassword("<username>", "<password>");
          System.out.println(service.getModels());
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    });
    
    thread.start();
    
  7. 启动模拟器并查看控制台。你应该看到像

    这样的消息
    I/CredentialUtils: JNDI string lookups is not available.
    

    和语音到文本模型列表。

    I/System.out: [{
    I/System.out:   "name": "en-US_NarrowbandModel",
    I/System.out:   "rate": 8000
    I/System.out: }, {
    I/System.out:   "name": "pt-BR_BroadbandModel",
    I/System.out:   "rate": 16000
    I/System.out: }, {
    I/System.out: .... more models here
    I/System.out: }, {
    I/System.out:   "name": "en-US_BroadbandModel",
    I/System.out:   "rate": 16000
    I/System.out: }]
    
相关问题