简体   繁体   中英

Getting IllegalAccessError

When i am using this code it gives error:

2011-08-10 13:18:13.368::WARN: EXCEPTION
java.lang.IllegalAccessError: tried to access method org.mortbay.util.Utf8StringBuffer.(I)V from class org.mortbay.jetty.HttpURI

Code:

package com.google.api.client.sample.docs.v3;

import com.google.api.client.auth.oauth.OAuthCredentialsResponse;
import com.google.api.client.auth.oauth.OAuthHmacSigner;
import com.google.api.client.auth.oauth.OAuthParameters;
import com.google.api.client.googleapis.auth.oauth.GoogleOAuthAuthorizeTemporaryTokenUrl;
import com.google.api.client.googleapis.auth.oauth.GoogleOAuthGetAccessToken;
import com.google.api.client.googleapis.auth.oauth.GoogleOAuthGetTemporaryToken;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.sample.docs.v3.model.DocsUrl;
import java.awt.Desktop;
import java.awt.Desktop.Action;
import java.net.URI;

public class Auth {

    private static final String APP_NAME ="Google Documents List Data API Java Client Sample";

    private static OAuthHmacSigner signer;

    private static OAuthCredentialsResponse credentials;

    static void authorize(HttpTransport transport) throws Exception {
        // callback server
        LoginCallbackServer callbackServer = null;
        String verifier = null;
        String tempToken = null;
        try {

            callbackServer = new LoginCallbackServer();
            callbackServer.start();
            // temporary token
            GoogleOAuthGetTemporaryToken temporaryToken =new GoogleOAuthGetTemporaryToken();
            signer = new OAuthHmacSigner();
            signer.clientSharedSecret = "anonymous";
            temporaryToken.signer = signer;
            temporaryToken.consumerKey = "in.gappsdemo.in";
            //temporaryToken.scope ="https://apps-apis.google.com/a/feeds/user/";
            temporaryToken.scope = DocsUrl.ROOT_URL;
            temporaryToken.displayName = APP_NAME;
            temporaryToken.callback = callbackServer.getCallbackUrl();
            System.out.println("temporaryToken.callback: "+temporaryToken.callback);
            OAuthCredentialsResponse tempCredentials = temporaryToken.execute();
            signer.tokenSharedSecret = tempCredentials.tokenSecret;
            System.out.println("signer.tokenSharedSecret: " + signer.tokenSharedSecret);
            // authorization URL
            GoogleOAuthAuthorizeTemporaryTokenUrl authorizeUrl =new GoogleOAuthAuthorizeTemporaryTokenUrl();
            authorizeUrl.temporaryToken = tempToken = tempCredentials.token;
            String authorizationUrl = authorizeUrl.build();
            System.out.println("Go to this authorizationUrl: " + authorizationUrl);
            // launch in browser
            boolean browsed = false;
            if (Desktop.isDesktopSupported()) {
                Desktop desktop = Desktop.getDesktop();
                if (desktop.isSupported(Action.BROWSE)) {
                    System.out.println("In if browsed condition:");
                    desktop.browse(URI.create(authorizationUrl));
                    browsed = true;
                }
            }
            if (!browsed) {
                String browser = "google-chrome";
                Runtime.getRuntime().exec(new String[] {browser, authorizationUrl});
                System.out.println("In if !browsed condition1:");
            }
            System.out.println("tempToken: "+tempToken);
            verifier = callbackServer.waitForVerifier(tempToken);
            System.out.println("GoogleOAuthGetAccessToken: ");
        } finally {
            System.out.println("server Stop:");
            if (callbackServer != null) {
                System.out.println("server Stop:");
                callbackServer.stop();
            }
        }
        System.out.println("GoogleOAuthGetAccessToken: ");
        GoogleOAuthGetAccessToken accessToken = new GoogleOAuthGetAccessToken();
        accessToken.temporaryToken = tempToken;
        accessToken.signer = signer;
        accessToken.consumerKey = "in.gappsdemo.in";
        accessToken.verifier = verifier;
        credentials = accessToken.execute();
        signer.tokenSharedSecret = credentials.tokenSecret;
        System.out.println("signer.tokenSharedSecret: ");
        createOAuthParameters().signRequestsUsingAuthorizationHeader(transport);
    }

    static void revoke() {
        if (credentials != null) {
            try {
                GoogleOAuthGetAccessToken.revokeAccessToken(createOAuthParameters());
            } catch (Exception e) {
                e.printStackTrace(System.err);
            }
        }
    }

    private static OAuthParameters createOAuthParameters() {
        OAuthParameters authorizer = new OAuthParameters();
        authorizer.consumerKey = "in.gappsdemo.in";
        authorizer.signer = signer;
        authorizer.token = credentials.token;
        return authorizer;
    }
}

Here are two potentially related , posts . Notice you're getting an Error, not an Exception, so that is interesting. You might try running your JVM with -verbose to see where each class is getting loaded from, to see if maybe you're compiling with one class/jar, but accidentally running with another.

Also notice from the error that the packages are slightly different "org.mortbay.util" vs. "org.mortbay.jetty", so the UTF8StringBuffer constructor would need to be more visible. But again, normally a compiler would catch that.

I realize this isn't a full answer, to be sure, but at least a couple places to start looking.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM