使用Retrofit报以下错误,其他框架报这个错误也可以考虑是不是java8新特性引起的
java.lang.BootstrapMethodError: Exception from call site #6 bootstrap method
at okhttp3.internal.Util.(Util.java:87)
at okhttp3.internal.Util.skipLeadingAsciiWhitespace(Util.java:321)
at okhttp3.HttpUrl
B
u
i
l
d
e
r
.
p
a
r
s
e
(
H
t
t
p
U
r
l
.
j
a
v
a
:
1313
)
a
t
o
k
h
t
t
p
3.
H
t
t
p
U
r
l
.
g
e
t
(
H
t
t
p
U
r
l
.
j
a
v
a
:
917
)
a
t
r
e
t
r
o
f
i
t
2.
R
e
t
r
o
f
i
t
Builder.parse(HttpUrl.java:1313) at okhttp3.HttpUrl.get(HttpUrl.java:917) at retrofit2.Retrofit
Builder.parse(HttpUrl.java:1313)atokhttp3.HttpUrl.get(HttpUrl.java:917)atretrofit2.RetrofitBuilder.baseUrl(Retrofit.java:492)
解决方法:
在Module下的bulid.gradle->android->defaultConfig下添加
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
原因:Okhttp3中使用了java8新特性“方法与构造函数引用”,需要设置jdk版本在1.8以上
查看报错的okhttp3.internal.Util.java可以看到
CompileOptions的属性:
1.encoding:Java源文件的编码格式
2.incremental:是否应该使用Java编写的Gradle新的增量模型
3.sourceCompatibility:指定编译编译.java文件的jdk版本
4.targetCompatibility:确保class文件与targetCompatibility指定版本,或者更新的java虚拟机兼容