首先找到自己出现这个错误的原因,可以移步http://blog.csdn.net/u014453811/article/details/54582426
其他包括配置环境变量之类的方法,如果work for you,那么congratulations
不过我就没那么幸运了,stackoverflow上面的方法hava nothing work for me
我的配置AS3.0 Canary1
gradle:
android {
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
...
jackOptions {
enabled true
}
}
buildTypes {
...
}
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
}
项目配置如上图
gradle:
android {
compileSdkVersion 25
buildToolsVersion ‘25.0.0’
defaultConfig {
minSdkVersion 19
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'typedefs.txt'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
}
}
Module配置如上图
根据java1.8的方式进行配置
通过上面的链接命令行查出的错误是:
编译器 (1.8.0_131) 中出现异常错误。如果在 Bug Database (http://bugs.java.com) 中没有找到该错误, 请通过 Java Bug 报告页 (http://bugreport.java.com) 建立该 Java 编译器 Bug。请在报告中附上您的程序和以下诊断信息。谢谢。
com.sun.tools.javac.code.Symbol$CompletionFailure: 找不到java.lang.invoke.MethodType的类文件
分析应该是反射没有获取到方法,而我的baselib中用到的反射不多,而且牵扯到1.8 lambda表达式的只有一行代码
PageManager pageStateManager = PageManager.init(container, false, this::loadData);
试着将这行lambda表达式改成原始代码,make项目可以正常编译通过,不过具体还不太确定出现这个问题的具体原因,因为app配置和baselib的配置一致,而app中使用lambda未出现问题,有童鞋了解的话,还请不吝赐教