2016-10-15 75 views
0

我正在炼金术API。参考链接使用Alchemy RefIBM Watson Alchemy API VerifyError

我的Android代码

Thread thread = new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try 
      { 
       AlchemyLanguage service = new AlchemyLanguage(); 
       service.setApiKey("xxx - My API Key"); 

       Map<String,Object> param = new HashMap<String, Object>(); 
       param.put(AlchemyLanguage.TEXT, TextValue); 
       DocumentSentiment sentiment = service.getSentiment(param).execute(); 
       SentimentValue = sentiment.getText(); 
       System.out.println(sentiment); 

       SentimentType = sentiment.getSentiment().getType().name(); 
      } 
      catch (Exception ex) 
      { 
       Log.d("Exception : " , ex.toString()); 
      } 
     } 
    }); 

    thread.start(); 
    Toast.makeText(MainActivity.this, SentimentType+" ", Toast.LENGTH_SHORT).show(); 

AlchemyLanguage service = new AlchemyLanguage(); 

日志的初始化过程中的程序终止:

E/dalvikvm: Could not find class 'javax.naming.InitialContext', referenced from method com.ibm.watson.developer_cloud.util.CredentialUtils.getKeyUsingJNDI 
W/dalvikvm: VFY: unable to resolve new-instance 2848 (Ljavax/naming/InitialContext;) in Lcom/ibm/watson/developer_cloud/util/CredentialUtils; 
D/dalvikvm: VFY: replacing opcode 0x22 at 0x0007 
W/dalvikvm: VFY: unable to resolve exception class 2849 (Ljavax/naming/NamingException;) 
W/dalvikvm: VFY: unable to find exception handler at addr 0x2e 
W/dalvikvm: VFY: rejected Lcom/ibm/watson/developer_cloud/util/CredentialUtils;.getKeyUsingJNDI (Ljava/lang/String;)Ljava/lang/String; 
W/dalvikvm: VFY: rejecting opcode 0x0d at 0x002e 
W/dalvikvm: VFY: rejected Lcom/ibm/watson/developer_cloud/util/CredentialUtils;.getKeyUsingJNDI (Ljava/lang/String;)Ljava/lang/String; 
W/dalvikvm: Verifier rejected class Lcom/ibm/watson/developer_cloud/util/CredentialUtils; 
W/dalvikvm: threadid=12: thread exiting with uncaught exception (group=0x40d9e468) 
E/AndroidRuntime: FATAL EXCEPTION: Thread-754 
        java.lang.VerifyError: com/ibm/watson/developer_cloud/util/CredentialUtils 
         at com.ibm.watson.developer_cloud.service.WatsonService.<init>(WatsonService.java:102) 
         at com.ibm.watson.developer_cloud.service.AlchemyService.<init>(AlchemyService.java:55) 
         at com.ibm.watson.developer_cloud.alchemy.v1.AlchemyLanguage.<init>(AlchemyLanguage.java:54) 
         at com.numarga.alchemyinbuildtest.MainActivity$1$1.run(MainActivity.java:53) 
         at java.lang.Thread.run(Thread.java:856) 
I/Process: Sending signal. PID: 23131 SIG: 9 
Application terminated. 
+0

这个错误似乎暗示,在不正确 –

+0

您的API密钥我REF 'd这个链接[其他参考](http://www.ibm.com/watson/developercloud/doc/alchemylanguage/tutorials.shtml#curlTutorial-keywords),我可以得到结果。并且代码不会在'service.setApiKey(“xxx”)运行;'@ cricket_007 – user3501749

+0

您是否用自己的密钥替换了'xxx'? –

回答

0

这是在Java SDK中的bug。请确保您使用一个版本> 3.5.0的gradle中,使用类似3.7.1

'com.ibm.watson.developer_cloud:alchemy:3.7.1' 

然后调用AlchemyLanguage情感分析:

AlchemyLanguage service = new AlchemyLanguage(); 
service.setApiKey("xxx - My API Key"); 

Map<String,Object> param = new HashMap<String, Object>(); 
param.put(AlchemyLanguage.TEXT, TextValue); 

DocumentSentiment sentiment = service.getSentiment(param).execute(); 
System.out.println(sentiment);