2016-10-15 74 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);