2016-07-25 108 views
0

我嘗試使用Gmail API和我遇到的這個運行時異常:java.lang.NoClassDefFoundError:在JDK的Java/AWT /桌面1.7

java.lang.NoClassDefFoundError: java/awt/Desktop 

它發生在這裏(最後一行) :

InputStream stream = ReadMail.class.getResourceAsStream("/client_secret.json"); 
    Reader clientSecretReader = new InputStreamReader(stream); 
    GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(ReadMail.JSON_FACTORY, clientSecretReader); 

    GoogleAuthorizationCodeFlow flow = 
      new GoogleAuthorizationCodeFlow.Builder(
        ReadMail.HTTP_TRANSPORT, ReadMail.JSON_FACTORY, clientSecrets, ReadMail.SCOPES) 
        .setDataStoreFactory(ReadMail.DATA_STORE_FACTORY) 
        .setAccessType("offline") 
        .build(); 


    AuthorizationCodeInstalledApp authCodeInstalledApp = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()); 
    Credential credential = authCodeInstalledApp.authorize("user"); 

此代碼是坐在AsyncTaskdoInBackground()方法。

我檢查了並且Android Studio配置爲使用JDK 1.7。

爲什麼會發生這種情況,我該如何解決?

+0

這必須是一個類路徑問題,您不在運行時包含一些在編譯時可用的源代碼。 –

+0

@MattClark他在Android上。 – chrylis

+0

你必須包含堆棧跟蹤,而不僅僅是一行。我們需要知道觸發問題的類別負載。 – chrylis

回答

0

Android不支持所有的JDK類,只有subsetjava.awt不是其中的一部分。因此無法找到java.awt.Desktop。看起來你根本沒有使用正確的API。您應該改用Android Quickstart

+0

感謝您快速回答,我已經看到了Android快速入門頁面,但我無法使用它,因爲我爲Android API 21開發它。而Android快速入門僅在API 23支持 –

+0

我已經搜索了一些Gmail API代碼這有效,我發現這是:https://developers.google.com/gmail/api/quickstart/java 沒想到一些java代碼不能在Android中工作。你有任何解決方案如何使用Gmail的Android API 21而不是23? –

+0

@TalMantelmakher它聲明* API 23或更高版本*的Android SDK包。這並不意味着只支持API級別23和更高版本。 – tynn