发布版本上的Realm Conflict / ClassCastException

时间:2016-02-05 09:26:55

标签: android realm butterknife

使用

进行实时构建
compile 'io.realm:realm-android:0.87.4'

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

我的任务执行失败':app: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'
}

我们应该在这里添加更多内容吗?

====编辑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构建过程(守护程序)的状态可能已损坏。停止所有Gradle守护进程可以解决此问题。 停止Gradle构建过程(需要重新启动)
  • 您的项目可能正在使用第三方插件,该插件与项目中的其他插件或项目请求的Gradle版本不兼容。
对于损坏的Gradle进程,您还可以尝试关闭IDE,然后终止所有Java进程。

====编辑2 ====

  • 我现在关掉了Proguard
  • 我完全从项目中删除了刀具

问题依然存在......

3 个答案:

答案 0 :(得分:1)

一个下午疯狂的反复试验,我找到了它。有人添加了一个错误导入的@Nullable注释。

import javax.annotation.Nullable;

而且,只有在发布(导出)APK时,才会导致问题。

只需删除Nullable注释或将导入更改为:

import android.support.annotation.Nullable;

修复了问题。

我通过安装Java 8找到了它。比IDE给出了一个特定的错误,而不是上面问题中发布的一般堆栈跟踪。

答案 1 :(得分:0)

您的butterknife& realm库版本依赖项。

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

有关详情,请参阅以下链接issue github

注意: - 如果未解决,请检查您使用的注释的导入。

答案 2 :(得分:0)

尝试使用我们的AAR发行版而不是JAR来查看它是否修复了它。你可以在这里看到:https://realm.io/news/android-installation-change/

最新版本为0.87.4