首先找到自己出現這個錯誤的原因,可以移步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未出現問題,有童鞋瞭解的話,還請不吝賜教