AndroidStudio gradle build锁定在:app:compileDebugJavaWithJavac使用Room

时间:2017-09-17 00:01:09

标签: android android-studio gradle android-studio-3.0

我正在使用Android Studio 3.0 beta 6 / gradle:3.0.0-beta6,今天我遇到编译问题。

当我开始构建(CTRL + F9)时,该过程停止运行:":app:compileDebugJavaWithJavac" 我等了1个多小时,没有任何改变。

Gradle sync没问题,问题就在于编译。

我认为这是我项目中的问题,因为我可以使用此Android Studio版本编译另一个项目而没有问题。

我对这个问题进行了很多修改,我不确切地知道问题出在哪里。

我的gradle文件包含:

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'

我试试:

  1. 关闭/重新打开AndroidStudio
  2. 重新安装java jdk
  3. 清理项目/重建项目
  4. 删除文件夹.gradle
  5. 回滚gradle文件更改
  6. 但问题还在继续。

    任何想法? THKS。

    编辑:我发现问题与会议室持久性库有关,因为当我评论此属性时:

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

    构建成功运行。

    这是我的数据库类:

    @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;
        }
    }
    

    这是我的实体类:

    @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;
    }
    

1 个答案:

答案 0 :(得分:1)

Finnaly,我找到了解决方案。

如果Room实体中有递归,则构建卡住。

如果删除递归,则不会发生此问题:

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

我错误地使用了房间。根据文件(https://developer.android.com/topic/libraries/architecture/room.html#no-object-references):

  

Room禁止实体类之间的对象引用