2016-02-05 1 views
0

В прямом эфире сборках с использованиемRealm Конфликт/ClassCastException по выпуску строит

compile 'io.realm:realm-android:0.87.4' 

(compile 'com.jakewharton:butterknife:6.1.0') 

я получаю Execution Сбой задачи ": приложение: compileReleaseJavaWithJavac.

Caused by: java.lang.ClassCastException: com.sun.tools.javac.code.Symbol$VarSymbol cannot be cast to javax.lang.model.element.TypeElement 
at io.realm.processor.RealmProcessor.process(RealmProcessor.java:131) 
at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:793) 
at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:722) 
at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1700(JavacProcessingEnvironment.java:97) 
at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1029) 
at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1163) 
at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1108) 
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:824) 

В чем может быть проблема? Конфликт зависимости? Мы используем:

packagingOptions { 
    exclude 'META-INF/LICENSE' 
    exclude 'META-INF/LICENSE.txt' 
    exclude 'META-INF/NOTICE' 
    exclude 'META-INF/NOTICE.txt' 
    exclude 'META-INF/services/javax.annotation.processing.Processor' 
} 

Следует ли добавить что-нибудь еще?

==== EDIT 1 ====

Консоль также дает этот вывод (все ниже здесь, также возможные решения):

Error:java.lang.RuntimeException: java.lang.ClassCastException: com.sun.tools.javac.code.Symbol$VarSymbol cannot be cast to javax.lang.model.element.TypeElement 

Возможные причины этой неожиданной ошибки включают в себя :

  • Кэш зависимостей Gradle может быть поврежден (это иногда происходит после таймаута сетевого подключения.) Зависимости перезагрузки и проект синхронизации (требуется сеть)
  • Состояние Gradle bui Процесс ld (daemon) может быть поврежден. Остановка всех демонов Gradle может решить эту проблему. Процессы сборки стоп-градов (требуется перезагрузка)
  • В вашем проекте может быть сторонний плагин, который несовместим с другими плагинами проекта или версией Gradle, запрошенной проектом.
В случае коррумпированных процессов Gradle вы также можете попробовать закрыть среду IDE, а затем убить все процессы Java.

==== EDIT 2 ====

  • Я выключил Proguard Теперь
  • я удалил из нож для масла проекта полностью

Проблема все еще там ...

+1

ваш используя ProGuard для запутывания, если да, то проверить его –

ответ

1

После полудня сумасшедшего проб и ошибок позже я нашел его. Кто-то добавил @Nullable аннотацию с неправильным импортом.

import javax.annotation.Nullable; 

И что, только при выпуске (экспорте) APK, возникла проблема.

Простого удаления Nullable аннотации или изменения импорта в:

import android.support.annotation.Nullable; 

исправил проблему.

Я нашел его, установив Java 8. Чем IDE дает вам определенную ошибку, а не общую стекту, указанную в вопросе выше.

+0

здорово, что вы решили проблему –

0

Может возникнуть проблема в вашем butterknife & realm library versio n зависимостей.

compile 'io.realm:realm-android:0.81.1' 
compile 'com.jakewharton:butterknife:7.0.1' 

Для получения дополнительной информации перейдите по ссылке ниже issue github

Примечание: - Если не устранена, проверьте импорт на аннотацию, которую вы используете.

+0

я удалил из нож для масла проекта полностью. Проблема не исчезла ... – Frank

+0

Вы используете аннотацию или расширяете модель с помощью RealObject –

+0

Я расширяю RealObject. Зачем? – Frank

0

Попробуйте использовать наш дистрибутив AAR вместо JAR, чтобы узнать, исправляет ли он его. Вы можете увидеть, как здесь: https://realm.io/news/android-installation-change/

Последняя версия 0.87.4