android - JSONParser 错误,找不到类。安卓

标签 android json parsing twitter feed

我正尝试在我的 Android 应用程序中获取来自 Twitter 的提要。为此,我使用了一些示例代码,但现在我无法启动该应用程序。这是代码:

import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import org.json.simple.parser.JSONParser;

    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.net.Uri;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.TextView;

    public class Twitter extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.twitter_layout);

            ArrayList<Tweet> tweets = getTweets("android", 1);

            ListView listView = (ListView) findViewById(R.id.ListViewId);
            listView.setAdapter(new UserItemAdapter(this, R.layout.listitem, tweets));
        }

        public class UserItemAdapter extends ArrayAdapter<Tweet> {
            private ArrayList<Tweet> tweets;

            public UserItemAdapter(Context context, int textViewResourceId, ArrayList<Tweet> tweets) {
                super(context, textViewResourceId, tweets);
                this.tweets = tweets;
            }

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                View v = convertView;
                if (v == null) {
                    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    v = vi.inflate(R.layout.listitem, null);
                }

                Tweet tweet = tweets.get(position);
                if (tweet != null) {
                    TextView username = (TextView) v.findViewById(R.id.username);
                    TextView message = (TextView) v.findViewById(R.id.message);
                    ImageView image = (ImageView) v.findViewById(R.id.avatar);

                    if (username != null) {
                        username.setText(tweet.username);
                    }

                    if(message != null) {
                        message.setText(tweet.message);
                    }

                    if(image != null) {
                        image.setImageBitmap(getBitmap(tweet.image_url));
                    }
                }
                return v;
            }
        }

        public Bitmap getBitmap(String bitmapUrl) {
            try {
                URL url = new URL(bitmapUrl);
                return BitmapFactory.decodeStream(url.openConnection() .getInputStream()); 
            }
            catch(Exception ex) {return null;}
        }

        public ArrayList<Tweet> getTweets(String searchTerm, int page) {
            String searchUrl = "http://search.twitter.com/search.json?q=@" 
                                + searchTerm + "&rpp=100&page=" + page;

            ArrayList<Tweet> tweets = new ArrayList<Tweet>();

            HttpClient client = new  DefaultHttpClient();
            HttpGet get = new HttpGet(searchUrl);

            ResponseHandler<String> responseHandler = new BasicResponseHandler();

            String responseBody = null;
            try{
                responseBody = client.execute(get, responseHandler);
            }catch(Exception ex) {
                ex.printStackTrace();
            }

            JSONObject jsonObject = null;

            /*  */
            JSONParser pars=new JSONParser();

            /*  */

            try {
                Object obj = pars.parse(responseBody);
                jsonObject=(JSONObject)obj;

            }catch(Exception ex){
                Log.v("TEST","Exception: " + ex.getMessage());
            }

            JSONArray arr = null;

            try {
                Object j = jsonObject.get("results");
                arr = (JSONArray)j;
            }catch(Exception ex){
                Log.v("TEST","Exception: " + ex.getMessage());
            }

            for(Object t : arr) {
                Tweet tweet = new Tweet(
                        ((JSONObject)t).get("from_user").toString(),
                        ((JSONObject)t).get("text").toString(),
                        ((JSONObject)t).get("profile_image_url").toString()
                        );
                tweets.add(tweet);
            }

            return tweets;
        }

        public class Tweet {
            public String username;
            public String message;
            public String image_url;

            public Tweet(String username, String message, String url) {
                this.username = username;
                this.message = message;
                this.image_url = url;
            }
        }
    }

这是我的 LogCat:

05-23 11:34:16.443: E/AndroidRuntime(25616): FATAL EXCEPTION: main
05-23 11:34:16.443: E/AndroidRuntime(25616): java.lang.NoClassDefFoundError: org.json.simple.parser.JSONParser
05-23 11:34:16.443: E/AndroidRuntime(25616):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at android.app.ActivityThread.startActivityNow(ActivityThread.java:2503)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:673)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at android.widget.TabHost.setCurrentTab(TabHost.java:345)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:138)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:453)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at android.view.View.performClick(View.java:2408)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at android.view.View$PerformClick.run(View.java:8816)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at android.os.Handler.handleCallback(Handler.java:587)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at android.os.Handler.dispatchMessage(Handler.java:92)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at android.os.Looper.loop(Looper.java:123)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at android.app.ActivityThread.main(ActivityThread.java:4627)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at java.lang.reflect.Method.invokeNative(Native Method)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at java.lang.reflect.Method.invoke(Method.java:521)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
05-23 11:34:16.443: E/AndroidRuntime(25616):    at dalvik.system.NativeStart.main(Native Method)

我正在使用 http://code.google.com/p/json-simple/ .

最佳答案

您需要在项目的LibLibs 目录中有json-simple jar。您目前可能已经设置了它,因此 jar 可用于构建,但不包含在构建的应用程序中。

关于android - JSONParser 错误,找不到类。安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10717341/

相关文章:

android - 如何知道用户何时打开/关闭移动数据或 WiFi?

java - Android 仅在应用程序中更改语言 : Some strings not translated properly

如果达到 setOffscreenPageLimit,位于 ViewPager 中的 Fragment 中的 Android RecyclerView 不会重新加载/刷新 View

java - 将特定输出解析为变量 Java

android - Web 服务响应不是 XML

android - 如何在网站中激活移动原生共享?

json - 如何为本地服务的 JSON 文件创建 Web 服务端点

jquery - 如何从FLASK中的GET请求获取Json对象

PHP Json 不一致

c - 当我尝试从一串字符中获取数字时,函数总是返回零