2012-04-19 2 views
2

Я пытаюсь использовать API Google Адреса для Android, но всякий раз, когда я пытаюсь запустить мое приложение, я получаю эту ошибку:java.lang.NoClassDefFoundError: com.google.api.client.http.javanet.NetHttpTransport

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(); 

я добавил следующую банку п Īles на мой путь сборки:

  • Обще-каротаж 1.1.1

  • Google-клиента-клиент-1.8.3-бета

  • Google-HTTP-клиент-android2-1.8 0,3-бета

  • Google-клиент-клиент-android3-1.8.3-бета

  • Google-клиент-клиент-AppEngine-1.8.3-бета

  • Google-OAuth-клиент-1.8.0-бета

  • gson-2,1

  • гуавы-R09

  • гуавы-11.0.2

  • HttpClient-4,0 .3

  • httpcore-4.0.1

  • джексон-ядро-ASL-1.9.4

  • jdo2-апи-2,3-ЕВ

  • -20080701 JSON

  • jsr305-1.3.9

  • JUnit-4,8 .2

  • Protobuf-Java-2.2.0

  • транзакций апи-1,1

  • xpp3-1.1.4c

  • Google-API-клиент-1.8.0-бета

  • Google-API-клиент-AppEngine-1.8.0-бета

  • Google-апи-клиент-сервлет-1.8.0

Но я до сих пор удается получить NoClassDefFoundExeception. Что я делаю не так?

+0

Какая версия Android SDK вы используете, r16 или новее? – yorkw

ответ

1

Я думаю, что проблема заключается в добавлении Jars, попробуйте это Создайте папку с корневым именем/libs (not/lib) и Project => Properties => Java Build Path => Libraries => Добавить JAR ...

Вы можете найти более подробную помощь here и here

+0

Я сделал это, но у меня все еще проблема. У вас есть еще предложения? –

+1

@ StephenHerring Попробуйте очистить свой код. –

0

Я использую Google-HTTP-клиент-1.11.0 beta.jar (NetHttpTransport расположен), которая является более новой, чем ваша, и она отлично работает, получая пытаться.

Смежные вопросы