我正在尝试从 YouTube api 获取数据,但是当我使用创建httpclient对象时asyctask出现 NoClassDefFoundError 错误。为什么会出现这个错误?
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Adapter;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerView;
import com.google.android.youtube.player.YouTubeStandalonePlayer;
import org.apache.http.HttpEntity;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class MainActivity extends YouTubeBaseActivity {
private static final String TAG="MainActivity";
private static String urll="https://www.googleapis.com/youtube/v3/" +
"videos?part=snippet%2CcontentDetails%2Cstatistics&id=Ks-_Mh1QhMc&key="+YouTubeConfig.getApiKey()+" HTTP/1.1";
YouTubePlayerView player;
YouTubePlayer.OnInitializedListener playerInitializer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<String> a= new ArrayList<>();
for (int x =0; x<100;x++ ){
a.add(String.valueOf(x));
}
ListView lv= findViewById(R.id.izlenecekVideolar);
ArrayAdapter<String> veriAdaptoru=new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_1, android.R.id.text1, a);
lv.setAdapter(veriAdaptoru);
player = (YouTubePlayerView) findViewById(R.id.youtubeView);
int d = Log.d(TAG, "onCreate: ");
new GetYoutube().execute();
player.initialize(YouTubeConfig.getApiKey(),new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
List<String> izle=new ArrayList<>();
izle.add("W4hTJybfU7s");
izle.add("co1T0ue8zD8");
youTubePlayer.loadVideos(izle);
Log.d(TAG, "onInitializationSuccess: ");
youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.MINIMAL);
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
Log.d(TAG, "onInitializationFailure: ");
}
}
);
Log.d(TAG, "onCreate:initialized ");
}
private static class GetYoutube extends AsyncTask<Void,String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(Void... voids) {
HttpClient hc=new DefaultHttpClient();
HttpGet hget=new HttpGet(urll);
try {
HttpResponse response =hc.execute(hget);
HttpEntity he= response.getEntity();
String json= EntityUtils.toString(he);
return json;
}
catch (Exception e){
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (s != null)
{
try {
JSONObject jse=new JSONObject(s);
Log.e("response",jse.toString());
}
catch (Exception e){
e.printStackTrace();
}
}
}
}
}
LOGCAT
2019-07-27 01:49:22.162 21763-21763/com.gamedu.yourchild E/AndroidRuntime:致命异常:主进程:com.gamedu.yourchild,PID:21763 java.lang.NoClassDefFoundError:解析失败:Lorg/ apache/commons/日志记录/LogFactory;在 org.apache.http.impl.client.AbstractHttpClient.(AbstractHttpClient.java:182) 在 org.apache.http.impl.client.DefaultHttpClient.(DefaultHttpClient.java:150) 在 com.gamedu.yourchild.MainActivity.onCreate (MainActivity.java:68) 在 android.app.Activity.performCreate(Activity.java:7698) 在 android.app.Activity.performCreate(Activity.java:7687) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java: 1299) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3096) 在 android.app.ActivityThread。