2016-07-25 18 views
0

Ich versuche, die Google Mail-API zu verwenden, und ich habe diese Laufzeitausnahme:java.lang.NoClassDefFoundError: java/awt/Desktop in JDK 1.7

java.lang.NoClassDefFoundError: java/awt/Desktop 

Es tritt hier (in der letzten Zeile) :

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

Dieser Code wird in der doInBackground() Methode der AsyncTask sitzen.

Ich habe überprüft und Android Studio ist für die Verwendung von JDK 1.7 konfiguriert.

Warum passiert das und wie kann ich es beheben?

+0

Dies muss ein Klassenpfadproblem sein, Sie fügen zur Laufzeit nicht einige Quellen hinzu, die Sie zur Kompilierzeit zur Verfügung hatten. –

+0

@MattClark Er ist auf Android. – chrylis

+0

Sie müssen den Stack-Trace einschließen, nicht nur die einzelne Zeile. Wir müssen wissen, welche Klassenlast das Problem auslöst. – chrylis

Antwort

0

Android unterstützt nicht alle JDK-Klassen, nur ein subset und java.awt sind nicht Teil davon. Daher kann java.awt.Desktop nicht gefunden werden. Es scheint, als ob Sie überhaupt nicht die richtige API verwenden. Sie sollten stattdessen Android Quickstart verwenden.

+0

Vielen Dank für die schnelle Antwort, ich habe die Android Quickstart-Seite gesehen, aber ich kann sie nicht verwenden, da ich sie für Android API 21 entwickle. Und der Android Quickstart wird nur von API 23 unterstützt. –

+0

Ich habe stundenlang nach Gmail-API-Code gesucht das funktioniert und was ich gefunden habe, ist dies: https://developers.google.com/gmail/api/quickstart/java Dachte nicht, dass einige Java-Code in Android nicht funktionieren kann. Haben Sie eine Lösung für die Verwendung der Google Mail-API für Android 21 und nicht für 23? –

+0

@TalMantelmakher Es gibt * Android SDK-Pakete für API 23 oder höher *. Dies bedeutet nicht, dass nur API-Level 23 und höher unterstützt werden. – tynn

Verwandte Themen