发布版本上的领域冲突/ClassCastException
Realm Conflict / ClassCastException on release builds
在实时构建中使用
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.access00(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 构建进程(需要重新启动)
- 您的项目可能正在使用第三方插件,该插件与项目中的其他插件或 [=50 的版本不兼容=] 项目请求。
在损坏的 Gradle 进程的情况下,您还可以尝试关闭 IDE 然后杀死所有 Java 进程.
==== 编辑 2 ====
- 我现在关闭 Proguard
- 我从项目中完全删除了 butterknife
问题依然存在...
您的 butterknife
& realm
库版本依赖项可能存在问题。
compile 'io.realm:realm-android:0.81.1'
compile 'com.jakewharton:butterknife:7.0.1'
有关详细信息,请阅读下面的内容 link issue github
注意:-如果没有解决,请检查您使用的注释导入。
经过一个下午疯狂的试错,终于找到了。有人添加了错误导入的@Nullable 注释。
import javax.annotation.Nullable;
而且,只有在发布(导出)APK 时才会导致问题。
只需删除 Nullable 注释或将导入更改为:
import android.support.annotation.Nullable;
已解决问题。
我通过安装 Java 8 找到它。比 IDE 给你一个特定的错误,而不是上面问题中发布的一般堆栈跟踪。
尝试使用我们的 AAR 发行版而不是 JAR 来查看它是否修复了它。你可以在这里看到如何:https://realm.io/news/android-installation-change/
最新版本为0.87.4
在实时构建中使用
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.access00(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 构建进程(需要重新启动)
- 您的项目可能正在使用第三方插件,该插件与项目中的其他插件或 [=50 的版本不兼容=] 项目请求。
==== 编辑 2 ====
- 我现在关闭 Proguard
- 我从项目中完全删除了 butterknife
问题依然存在...
您的 butterknife
& realm
库版本依赖项可能存在问题。
compile 'io.realm:realm-android:0.81.1'
compile 'com.jakewharton:butterknife:7.0.1'
有关详细信息,请阅读下面的内容 link issue github
注意:-如果没有解决,请检查您使用的注释导入。
经过一个下午疯狂的试错,终于找到了。有人添加了错误导入的@Nullable 注释。
import javax.annotation.Nullable;
而且,只有在发布(导出)APK 时才会导致问题。
只需删除 Nullable 注释或将导入更改为:
import android.support.annotation.Nullable;
已解决问题。
我通过安装 Java 8 找到它。比 IDE 给你一个特定的错误,而不是上面问题中发布的一般堆栈跟踪。
尝试使用我们的 AAR 发行版而不是 JAR 来查看它是否修复了它。你可以在这里看到如何:https://realm.io/news/android-installation-change/
最新版本为0.87.4