我在Android Studio上使用IBM Watson Speech to Text API时遇到了一些问题。我遵循https://github.com/watson-developer-cloud/java-sdk/tree/develop/speech-to-text
的说明。 这是我的MainActivity代码:什么是Android Studio上的java.lang.ExceptionInInitializerError和java.lang.IllegalArgumentException?
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.w("debug_prog", "[+] Start");
SpeechToText service = new SpeechToText("cff16fe4-6a27-4289-a343-a394e1c94c2x", "XStw1ieErTkx");
if(service == null){
Log.w("debug_prog", "[-] Service is null");
}
Log.w("debug_prog", "[+] Object Created");
File audio = new File("src/test/resources/audio_001.wav");
Log.w("debug_prog", "[+] Audio: " + String.valueOf(audio));
SpeechResults transcript = service.recognize(audio).execute();
Log.w("debug_prog", "[+] Result: " + String.valueOf(transcript));
}
}
但是当我编上Android手机的代码(API 22)我得到了一些错误是这样的:
08-10 21:46:05.367 12047-12047/com.example.albertus.speechtotext E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.albertus.speechtotext, PID: 12047
java.lang.ExceptionInInitializerError
at com.example.albertus.speechtotext.MainActivity.onCreate(MainActivity.java:33)
at android.app.Activity.performCreate(Activity.java:6093)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2458)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2577)
at android.app.ActivityThread.access$1000(ActivityThread.java:164)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1462)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:159)
at android.app.ActivityThread.main(ActivityThread.java:5541)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:975)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)
Caused by: java.lang.IllegalArgumentException: Unknown pattern character 'X'
at java.text.SimpleDateFormat.validatePatternCharacter(SimpleDateFormat.java:314)
at java.text.SimpleDateFormat.validatePattern(SimpleDateFormat.java:303)
at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:356)
at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:249)
at com.ibm.watson.developer_cloud.util.DateDeserializer.<init>(DateDeserializer.java:52)
at com.ibm.watson.developer_cloud.util.GsonSingleton.registerTypeAdapters(GsonSingleton.java:53)
at com.ibm.watson.developer_cloud.util.GsonSingleton.createGson(GsonSingleton.java:42)
at com.ibm.watson.developer_cloud.util.GsonSingleton.getGsonWithoutPrettyPrinting(GsonSingleton.java:76)
at com.ibm.watson.developer_cloud.speech_to_text.v1.SpeechToText.<clinit>(SpeechToText.java:119)
at com.example.albertus.speechtotext.MainActivity.onCreate(MainActivity.java:33)
at android.app.Activity.performCreate(Activity.java:6093)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2458)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2577)
at android.app.ActivityThread.access$1000(ActivityThread.java:164)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1462)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:159)
at android.app.ActivityThread.main(ActivityThread.java:5541)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:975)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)
这个错误发生时我创建SpeechToText对象,请帮助,谢谢:)