2016-07-25 3 views
0

私はGmailのAPIを使用しようとしていますし、私はこの実行時例外が発生しました:それは(最後の行に)ここで発生しjava.lang.NoClassDefFoundErrorが:JDK 1.7でJava/AWT /デスクトップ

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

スタックトレースは、1行だけでなく、含める必要があります。どのクラス負荷が問題を引き起こしているのかを知る必要があります。 – 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 AndroidでいくつかのJavaコードが動作しないとは思わなかったです。あなたは23ではなくAndroid 21用のGmail APIを使用するための解決策はありますか? –

+0

@ TalMantelmakher状態* API 23以降のAndroid SDKパッケージ*。これはAPIレベル23以降のみがサポートされていることを意味するものではありません。 – tynn

関連する問題