致命异常:AsyncTask#1:java.lang.RuntimeException:执行doInBackground()时出错
我正在尝试使用Microsoft文本转换器API将一种语言翻译成另一种语言。我已经在java上开发了这个,但是当我把它移植到Android上时。它给了我这个错误。它似乎在向我指出IOUtils,但我认为我已经在项目结构中添加了该先决条件。但是有没有不使用IOUtils的方法?。像OutputStream?。似乎IOUtils是个问题,但IDK。我无法理解logcat错误:/ 我的日志在这里:致命异常:AsyncTask#1:java.lang.RuntimeException:执行doInBackground()时出错,java,android,android-asynctask,Java,Android,Android Asynctask,我正在尝试使用Microsoft文本转换器API将一种语言翻译成另一种语言。我已经在java上开发了这个,但是当我把它移植到Android上时。它给了我这个错误。它似乎在向我指出IOUtils,但我认为我已经在项目结构中添加了该先决条件。但是有没有不使用IOUtils的方法?。像OutputStream?。似乎IOUtils是个问题,但IDK。我无法理解logcat错误:/ 我的日志在这里: E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.ExceptionInInitializerError
at org.apache.commons.io.IOUtils.write(IOUtils.java:2049)
at com.example.joshu.translatorownimplementation.MainActivity.translate(MainActivity.java:101)
at com.example.joshu.translatorownimplementation.MainActivity$LongOperation.doInBackground(MainActivity.java:70)
at com.example.joshu.translatorownimplementation.MainActivity$LongOperation.doInBackground(MainActivity.java:55)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.NoClassDefFoundError: java.nio.charset.StandardCharsets
at org.apache.commons.io.Charsets.<clinit>(Charsets.java:120)
at org.apache.commons.io.IOUtils.write(IOUtils.java:2049)
at com.example.joshu.translatorownimplementation.MainActivity.translate(MainActivity.java:101)
at com.example.joshu.translatorownimplementation.MainActivity$LongOperation.doInBackground(MainActivity.java:70)
at com.example.joshu.translatorownimplementation.MainActivity$LongOperation.doInBackground(MainActivity.java:55)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
E/AndroidRuntime:致命异常:异步任务#1
java.lang.RuntimeException:执行doInBackground()时出错
在android.os.AsyncTask$3.done(AsyncTask.java:299)
位于java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
位于java.util.concurrent.FutureTask.setException(FutureTask.java:124)
位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
位于java.util.concurrent.FutureTask.run(FutureTask.java:137)
在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
运行(Thread.java:856)
原因:java.lang.ExceptionInInitializeError
位于org.apache.commons.io.IOUtils.write(IOUtils.java:2049)
位于com.example.joshu.translatorownplementation.MainActivity.translate(MainActivity.java:101)
位于com.example.joshu.translatorownemplementation.MainActivity$LongOperation.doInBackground(MainActivity.java:70)
位于com.example.joshu.translatorownemplementation.MainActivity$LongOperation.doInBackground(MainActivity.java:55)
在android.os.AsyncTask$2.call(AsyncTask.java:287)
位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
位于java.util.concurrent.FutureTask.run(FutureTask.java:137)
在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
运行(Thread.java:856)
原因:java.lang.NoClassDefFoundError:java.nio.charset.StandardCharsets
位于org.apache.commons.io.Charsets(Charsets.java:120)
位于org.apache.commons.io.IOUtils.write(IOUtils.java:2049)
位于com.example.joshu.translatorownplementation.MainActivity.translate(MainActivity.java:101)
位于com.example.joshu.translatorownemplementation.MainActivity$LongOperation.doInBackground(MainActivity.java:70)
位于com.example.joshu.translatorownemplementation.MainActivity$LongOperation.doInBackground(MainActivity.java:55)
在android.os.AsyncTask$2.call(AsyncTask.java:287)
位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
位于java.util.concurrent.FutureTask.run(FutureTask.java:137)
在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
运行(Thread.java:856)
这是我的密码:
import org.apache.commons.io.IOUtils;
import java.io.BufferedReader;
import java.io.OutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import javax.net.ssl.HttpsURLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MSTranslateAPI {
private static String output;
private static String key = "<MS KEY for Translator API>";
public static void main(String[] args) throws Exception {
// TODO: Specify your translation requirements here:
String fromLang = "en";
String toLang = "ko";
String text = "Hello Friend";
MSTranslateAPI.translate(fromLang, toLang, text);
}
public static void translate(String fromLang, String toLang, String text) throws Exception {
String authenticationUrl = "https://api.cognitive.microsoft.com/sts/v1.0/issueToken";
HttpsURLConnection authConn = (HttpsURLConnection) new URL(authenticationUrl).openConnection();
authConn.setDoOutput(true);
authConn.setRequestMethod("POST");
authConn.setRequestProperty("Ocp-Apim-Subscription-Key", key);
IOUtils.write("", authConn.getOutputStream(), "UTF-8");
String token = IOUtils.toString(authConn.getInputStream(), "UTF-8");
authConn.disconnect();
System.out.println("TOKEN: "+token);
if(authConn.getResponseCode()==200) {
String appId = URLEncoder.encode("Bearer " + token, "UTF-8");
String text2 = URLEncoder.encode(text, "UTF-8");
String from = fromLang;
String to = toLang;
String translatorTextApiUrl ="https://api.microsofttranslator.com/v2/http.svc/GetTranslations?appid="+appId+"&text="+text2+"&from="+from+"&to="+to+"&maxTranslations=5";
HttpsURLConnection translateConn = (HttpsURLConnection) new URL(translatorTextApiUrl).openConnection();
translateConn.setRequestMethod("POST");
translateConn.setDoOutput(true);
IOUtils.write("", translateConn.getOutputStream(), "UTF-8");
String resp = IOUtils.toString(translateConn.getInputStream(), "UTF-8");
translateConn.disconnect();
System.out.println(resp+"\n\n");
}
else {
}
}
}
import org.apache.commons.io.IOUtils;
导入java.io.BufferedReader;
导入java.io.OutputStream;
导入java.io.InputStreamReader;
导入java.net.HttpURLConnection;
导入java.net.URL;
导入java.net.urlcoder;
导入javax.net.ssl.HttpsURLConnection;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
公共类MSTranslateAPI{
私有静态字符串输出;
私有静态字符串密钥=”;
公共静态void main(字符串[]args)引发异常{
//TODO:在此处指定您的翻译要求:
字符串fromLang=“en”;
字符串toLang=“ko”;
String text=“你好,朋友”;
MSTranslateAPI.translate(fromLang、toLang、text);
}
公共静态void translate(String fromLang、String toLang、String text)引发异常{
字符串身份验证URL=”https://api.cognitive.microsoft.com/sts/v1.0/issueToken";
HttpsURLConnection authConn=(HttpsURLConnection)新URL(authenticationUrl).openConnection();
authConn.setDoOutput(真);
authConn.setRequestMethod(“POST”);
setRequestProperty(“Ocp Apim订阅密钥”,密钥);
write(“,authConn.getOutputStream(),“UTF-8”);
字符串标记=IOUtils.toString(authConn.getInputStream(),“UTF-8”);
authConn.disconnect();
System.out.println(“令牌:+TOKEN”);
如果(authConn.getResponseCode()==200){
字符串appId=URLEncoder.encode(“载体”+令牌,“UTF-8”);
字符串text2=URLEncoder.encode(文本,“UTF-8”);
字符串from=fromLang;
字符串to=toLang;
字符串translatorTextApiUrl=”https://api.microsofttranslator.com/v2/http.svc/GetTranslations?appid=“+appId+”&text=“+text2+”&from=“+from+”&to=“+to+”&maxTranslations=5”;
HttpsURLConnection translateConn=(HttpsURLConnection)新URL(translaterExtapiURL).openConnection();
translatecon.setRequestMethod(“POST”);
translatecon.setDoOutput(真);
write(“,translatecon.getOutputStream(),“UTF-8”);
字符串resp=IOUtil