android studio 2.2 设置支持 java8,dagger2 就会报错,求解决办法?

2016-10-07 09:56:45 +08:00
 nicegoing
其他的库都兼容,我用 dagger2.7 就是编译不过,我感觉是Jack Toolchain的问题。请问大家怎么解决的。
12849 次点击
所在节点    Android
7 条回复
wenLiangcan
2016-10-07 11:27:49 +08:00
在 buildscript.dependencies 里加入 guava
CFO
2016-10-07 15:30:04 +08:00
引用了 apt 吗?
xingda920813
2016-10-09 16:49:08 +08:00
如果启用了 Jack 的话( jackOptions.enabled = true ), project build.gradle classpath 中的 apt 要去掉, module build.gradle 中的 apply plugin: 'apt' 也要去掉, dependencies 中的 apt 要改为 annotationProcessor 。

如果没有启用 Jack 编译器,把日志贴上来看看。
xingda920813
2016-10-09 17:14:09 +08:00
project build.gradle :

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

module build.gradle :

apply plugin: 'com.neenbedankt.android-apt'

compile 'com.google.dagger:dagger:+'
provided 'org.glassfish:javax.annotation:+'
provided 'com.google.dagger:dagger-compiler:+'
nicegoing
2016-10-10 09:24:41 +08:00
@xingda920813
启用的是 Jack ,报这个错误:
com.android.jack.ir.JNodeInternalError: java.lang.Exception: java.lang.NoClassDefFoundError: org/eclipse/osgi/util/NLS
有人提出了这个问题 https://code.google.com/p/android/issues/detail?id=210882 ,应该还没修复。
xshengcn
2016-10-12 11:26:08 +08:00
不需要引用 apt
apply plugin: 'com.android.application'

android {

defaultConfig {

jackOptions {
enabled true
}
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

dependencies {
// dagger2
compile 'com.google.dagger:dagger:2.7'
annotationProcessor 'com.google.dagger:dagger-compiler:2.7'
provided 'javax.annotation:jsr250-api:1.0'
}
nicegoing
2016-10-12 12:54:50 +08:00
@xshengcn 用你的配置,还是那个问题 NoClassDefFoundError: org/eclipse/osgi/util/NLS 。暂时不用 Jack 了,等成熟了再看看。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/310926

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX