2017-09-17 2 views
1

Ich benutze Android Studio 3.0 Beta 6/Gradle: 3.0.0-Beta6, und heute habe ich Probleme mit der Zusammenstellung.AndroidStudio Gradle Build gesperrt in: app: compileDebugJavaWithJavac mit Raum

Wenn ich starten Sie den Build (STRG + F9), der Prozess Stopp in Betrieb: ":app:compileDebugJavaWithJavac" ich warten mehr als 1 Stunde, und nichts ändern.

Gradle Sync ist in Ordnung, das Problem ist nur die Kompilierung.

Ich denke, es ist ein Problem in meinem Projekt, weil ich ein anderes Projekt problemlos mit dieser Android Studio Version kompilieren kann.

Ich habe viele Änderungen an diesem Problem vorgenommen und ich weiß nicht genau, wo das Problem liegt.

Meine gradle Datei enthält diese:

implementation fileTree(include: ['*.jar'], dir: 'libs') 
implementation 'com.android.support:appcompat-v7:26.1.0' 
implementation 'com.android.support:design:26.1.0' 
implementation 'com.android.support:support-v4:26.1.0' 
testImplementation 'junit:junit:4.12' 
androidTestImplementation 'com.android.support.test:runner:1.0.1' 
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' 
compile 'com.jakewharton:butterknife:8.8.1' 
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' 
compile "android.arch.persistence.room:runtime:1.0.0-alpha9-1" 
annotationProcessor "android.arch.persistence.room:compiler:1.0.0-alpha9-1" 
compile 'com.google.android.gms:play-services-vision:11.4.0' 
compile 'com.squareup.retrofit2:retrofit:2.3.0' 
compile 'com.google.code.gson:gson:2.8.1' 
compile 'com.squareup.retrofit2:converter-gson:2.2.0' 
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.1' 
compile 'com.google.guava:guava:21.0' 

Ich versuche:

  1. schließen/öffnen Sie Android Studio
  2. wieder installieren Java JDK
  3. sauber Projekt/Projekt
  4. löschen Ordner. Gradle
  5. r Ollback Gradle Dateiänderungen

aber das Problem geht weiter.

Irgendwelche Ideen? Thks.

EDIT: ich entdeckt habe, dass das Problem zu Raum Persistence-Bibliothek verwendet ist, denn wenn ich dieses Attribut Kommentar:

@Database(entities = {Task.class}, version = 1) 

Der Build erfolgreich ausgeführt wird.

Diese meine Datenbank-Klasse ist:

@Database(entities = {Task.class}, version = 1) 
public abstract class MainDatabase extends RoomDatabase { 

private static MainDatabase INSTANCE; 

public abstract MainDao mainDao(); 

private static final Object sLock = new Object(); 

public static MainDatabase getInstance(Context context) { 
     if (INSTANCE == null) { 
      INSTANCE = Room.databaseBuilder(context.getApplicationContext(), 
        MainDatabase.class, "tr.db") 
        .build(); 
     } 
     return INSTANCE; 
    } 
} 

Und das ist mein Entitätsklasse:

@Entity(tableName = "tasks") 
public class Task { 

    @PrimaryKey 
    @SerializedName("TaskID") 
    @Expose 
    public int taskID; 

    @SerializedName("TaskNumber") 
    @Expose 
    public int taskNumber; 

    @Embedded 
    @SerializedName("ParentTask") 
    @Expose 
    public Task parentTask; 
} 

Antwort

0

Finnaly, fand ich die Lösung.

Der Build bleibt hängen, wenn eine Rekursion in einer Room-Entity vorliegt.

Das Problem tritt nicht auf, wenn ich die Rekursion entfernen:

@Embedded 
@SerializedName("ParentTask") 
@Expose 
public Task parentTask; 

Ich war mit dem Zimmer in die falsche Richtung. Laut Dokumentation (https://developer.android.com/topic/libraries/architecture/room.html#no-object-references):

Raum nicht zulässt, Objektreferenzen zwischen Entitätsklassen

Verwandte Themen