2017-09-17 1 views
1

Androidスタジオ3.0ベータ6/gradle:3.0.0-beta6を使用していますが、今日はコンパイルに問題があります。AndroidStudioのgradleビルドがロックされました:app:compileDebugJavaWithJavac room

ビルド(CTRL + F9)を開始すると、プロセスは停止します。":app:compileDebugJavaWithJavac" 1時間以上待つと何も変わりません。

グレード同期は問題ありません。問題は単なるコンパイルだけです。

私はこの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' 

I試してみてください。

  1. クローズ/再オープンするAndroidStudio
  2. 再インストールのJava JDK
  3. クリーンプロジェクトは/プロジェクト
  4. 消去フォルダーを再構築します。グラデル
  5. rアルファベットのグラデルファイルの変更

しかし、問題は続く。

すべてのアイデア? Thks。

EDIT:ビルドが正常に実行

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

そして、これが私のエンティティクラスである:

これは私のDatabaseクラスである

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

答えて

0

Finnaly、私は解決策を見つけました。

ルームエンティティに再帰がある場合、ビルドが停止します。

問題は、私は、再帰削除する場合は発生しません:

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

を私はルーム間違った方法を使用していました。ドキュメント(https://developer.android.com/topic/libraries/architecture/room.html#no-object-references)によると:

ルームには、エンティティクラス間のオブジェクト参照を許可しない

関連する問題