API клиента Android и Google Класс NetHttptransport не найден

1

Я впервые использую Google API API для Android. Я взял код из Пример программы, предоставленной Google. Мой код выглядит как

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import android.app.Activity;
import android.os.Bundle;

// Core Google API
import com.google.api.client.auth.oauth2.draft10.AccessTokenResponse;
import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAccessProtectedResource;
import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAccessTokenRequest.GoogleAuthorizationCodeGrant;
import com.google.api.client.googleapis.auth.oauth2.draft10.GoogleAuthorizationRequestUrl;
import com.google.api.client.http.ByteArrayContent;
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.HttpResponse;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson.JacksonFactory;

// Google+ API
import com.google.api.services.plus.*;

public class GooglePlusActivity extends Activity {

    // Want data about authenticated user
    private static final String SCOPE = "https://www.googleapis.com/auth/plus.me";
    //
    private static final String CALLBACK_URL = "urn:ietf:wg:oauth:2.0:oob";
    //
    private static final HttpTransport TRANSPORT = new NetHttpTransport();
    private static final JsonFactory JSON_FACTORY = new JacksonFactory();

    private static final String CLIENT_ID = "XXXXXXXXXXXXXXX";
    private static final String CLIENT_SECRET = "XXXXXXXXXXXXXX";

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Generate the URL to which we will direct users
        String authorizeUrl = new GoogleAuthorizationRequestUrl(CLIENT_ID,
                CALLBACK_URL, SCOPE).build();

        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

        try {
            String authorizationCode = in.readLine();

            // Exchange for an access and refresh token
            GoogleAuthorizationCodeGrant authRequest = new GoogleAuthorizationCodeGrant(TRANSPORT,
                JSON_FACTORY, CLIENT_ID, CLIENT_SECRET, authorizationCode, CALLBACK_URL);

            authRequest.useBasicAuthorization = false;

            AccessTokenResponse authResponse = authRequest.execute();

            String accessToken = authResponse.accessToken;

            GoogleAccessProtectedResource access = new GoogleAccessProtectedResource(accessToken,
                TRANSPORT, JSON_FACTORY, CLIENT_ID, CLIENT_SECRET, authResponse.refreshToken);

            HttpRequestFactory rf = TRANSPORT.createRequestFactory(access);
            System.out.println("Access token: " + authResponse.accessToken);


        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Plus plus = new Plus(new NetHttpTransport(), new JacksonFactory());

    }
}

Однако следующая строка:

private static final HttpTransport TRANSPORT = new NetHttpTransport();

вызывает исключение:

10-04 13:33:28.954: ERROR/AndroidRuntime(5925): Caused by: java.lang.NoClassDefFoundError: com.google.api.client.http.javanet.NetHttpTransport

У меня есть следующие библиотеки, добавленные в путь сборки:

Google-апи-клиент-1.5.0-beta.jar Google-API-сервисы плюс v1-1.2.2-beta.jar

и эти библиотеки зависимостей:

гуавы-R09 HttpClient-4.0.3 ДЖЕКСОН-ядро-ASL-1.6.7 gson-1,6

Я добавил зависимости только из отчаяния... поскольку я не вижу, что они мне нужны. Все мои операторы импорта корректно решаются во время компиляции, так почему я могу получить эту ошибку?

Я использую Eclipse Indigo в Windows 7.

Я добавил следующие файлы jar:

Google-апи-клиент-1.5.0-бета
Google-апи-клиент-расширения-1.5.0-бета
Google-API-клиент-расширения-android2-1.5.0-бета
Google-API-сервисы плюс v1-1.2.2-бета
Google-HTTP-клиент-1.5.0-бета
Google-HTTP-клиент-расширения-1.5.0-бета
Google-HTTP-клиент-расширения-android2-1.5.0-бета
Google-OAuth-клиент-1.5.0-бета
Google-OAuth-клиент-расширения-1.5.0-бета
gson-1,6
гуавы-r09
HttpClient-4.0.3
httpcore-4.0.1
jackson-core-asl-1.6.7

это решило мою проблему. Однако я все еще не уверен, как эти файлы соответствуют списку библиотек на странице wiki, а также почему они требуются, когда мой импорт разрешен во время компиляции.

  • 0
    Вы когда-нибудь узнавали, как и почему? У меня точно такая же проблема, и, хотя я использую немного разные версии (1.6.0), я не могу исправить это, хотя я добавил список выше (в основном httpclient и dhttpcore, которые нужно добавить ) к моему проекту. Но без игры в кости :(
Теги:
google-api

4 ответа

6
Лучший ответ

Вы должны явно добавить ссылку на библиотеку google-http-client-1.5.0-beta.jar(щелкните правой кнопкой мыши project- > Properties- > Java Build Path- > Add External JARs), не верьте пути класса. Если вы этого не сделаете, в файле apk не будут указаны требуемые данные.
Вы можете скачать Google+ здесь google-plus-java-starter_v5.zip Изображение 174551

0
plus = Plus.builder(transport, jsonFactory).setApplicationName("Google-PlusSample/1.0")
    .setHttpRequestInitializer(accessProtectedResource)
    .setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() {
        @Override
        public void initialize(JsonHttpRequest request) {
            PlusRequest plusRequest = (PlusRequest) request;
            plusRequest.setPrettyPrint(true);
        }
    }).build();

используйте это вместо

Plus plus = new Plus(new NetHttpTransport(), new JacksonFactory());
0

Может быть, немного поздно для этого, но банку, которую вы ищете, Google-HTTP-клиент-1.5.0-beta.jar

Эта банка определяет com.google.api.client.http. * и com.google.api.client.json. *

0

Вот список библиотек, которые вы должны иметь в своем проекте: http://code.google.com/p/google-api-java-client/wiki/Setup

  • 0
    Почтовый файл, предлагаемый Google на той же странице, не содержит всех перечисленных jar-файлов. Например, я не могу найти файл jar для: google-api-client-googleapis google-api-client-googleapis-extensions google-api-client-googleapis-extensions-android2 google-api-client-extensions-android3

Ещё вопросы

Сообщество Overcoder
Наверх
Меню