java.lang.NoClassDefFoundError:com.google.api.client.http.javanet.NetHttpTransport [英] java.lang.NoClassDefFoundError: com.google.api.client.http.javanet.NetHttpTransport

查看:215
本文介绍了java.lang.NoClassDefFoundError:com.google.api.client.http.javanet.NetHttpTransport的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用适用于Android的Google Places API,但是每当我尝试运行我的应用程序时,都会出现此错误:

I am trying to use the Google Places API for Android, but whenever I try to run my application I get this error:

04-19 18:27:16.094: E/AndroidRuntime(531): Caused by: java.lang.NoClassDefFoundError: com.google.api.client.http.javanet.NetHttpTransport
04-19 18:27:16.094: E/AndroidRuntime(531):  at com.android.FoodFinder.MainActivity.<clinit>(MainActivity.java:38)

这是我的代码

package com.android.FoodFinder;


import java.io.IOException;

import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpRequestFactory;
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.http.json.JsonHttpParser;
import com.google.api.client.json.jackson.JacksonFactory;

import android.app.ListActivity;
import android.content.Context;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends ListActivity
{

    private float distance;
    private Location location;
    private double latitude;
    private double longitude;
    private static String keyString = "0JVolnSwRg8xLH0J6d9rUwQH-e770dlWn3kcRuA";
    private static String urlString = "https://maps.googleapis.com/maps/api/place/search/json?";
    private static final HttpTransport transport = new NetHttpTransport();

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

        location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

        if(location == null)
        {
            latitude = 0;
            longitude = 0;
        }
        else
        {
            latitude = location.getLatitude();
            longitude = location.getLongitude();
        }

        final EditText distanceEdit = (EditText)findViewById(R.id.distance);

        final Button confirm = (Button)findViewById(R.id.confirm);
        confirm.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v)
            {
                try
                {
                    distance = Float.parseFloat(distanceEdit.getText().toString());
                    search(distance);                   
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                }
            }
        });
    }

    private void search(float d) throws IOException
    {
        HttpRequestFactory hrfactory = createRequestFactory(transport);
        HttpRequest request = hrfactory.buildGetRequest(new GenericUrl(urlString));
        request.getUrl().put("key", keyString);
        request.getUrl().put("location", latitude + ", " + longitude);
        request.getUrl().put("types", "restaurant");
        request.getUrl().put("radius", distance);
        request.getUrl().put("sensor", "false");

    }

    private static HttpRequestFactory createRequestFactory(final HttpTransport transport)
    {
        return transport.createRequestFactory(new HttpRequestInitializer()
        {

            public void initialize(HttpRequest request) throws IOException 
            {
                request.addParser(new JsonHttpParser(new JacksonFactory()));
            }
        });
    }

}

错误位于:

private static final HttpTransport transport = new NetHttpTransport();

我已将以下jar文件添加到我的构建路径:

I have added the following jar files to my build path:

  • commons-logging-1.1.1

  • commons-logging-1.1.1

google-http-client-1.8.3-beta

google-http-client-1.8.3-beta

google-http-client-android2-1.8.3-beta

google-http-client-android2-1.8.3-beta

google-http-client-android3-1.8.3-beta

google-http-client-android3-1.8.3-beta

google-http-client-appengine-1.8.3-beta

google-http-client-appengine-1.8.3-beta

google-oauth-client-1.8.0-beta

google-oauth-client-1.8.0-beta

gson-2.1

guava-r09

guava-r09

guava-11.0.2

guava-11.0.2

httpclient-4.0.3

httpclient-4.0.3

httpcore-4.0.1

httpcore-4.0.1

jackson-core-asl-1.9.4

jackson-core-asl-1.9.4

jdo2-api-2.3-eb

jdo2-api-2.3-eb

json-20080701

json-20080701

jsr305-1.3.9

jsr305-1.3.9

junit-4.8.2

junit-4.8.2

protobuf-java-2.2.0

protobuf-java-2.2.0

transaction-api-1.1

transaction-api-1.1

xpp3-1.1.4c

xpp3-1.1.4c

google-api-client-1.8.0-beta

google-api-client-1.8.0-beta

google-api-client-appengine-1.8.0-beta

google-api-client-appengine-1.8.0-beta

google-api-client-servlet-1.8.0

google-api-client-servlet-1.8.0

但是我仍然设法获得NoClassDefFoundExeception.我在做什么错了?

But I still manage to get the NoClassDefFoundExeception. What am I doing wrong?

推荐答案

我认为问题出在添加Jars上,尝试一下 在根名称/libs(不是/lib)下创建一个文件夹,然后在Project => Properties => Java Build Path => Libraries => Add JAR ...

I think the problem is with adding Jars, try this Create a folder at the root name /libs(not /lib) and Project => Properties => Java Build Path => Libraries => Add JAR ...

您可以在​​此处找到更多帮助和此处

You can find some more help here and here

这篇关于java.lang.NoClassDefFoundError:com.google.api.client.http.javanet.NetHttpTransport的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆