添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

1. 起因

引入依赖okhttp4.10.0,本地调用 okhttp提供的Api 没问题,部署服务器上运行报错。错误信息:

java.lang.NoSuchMethodError: okhttp3.RequestBody.create(Ljava/lang/String;Lokhttp3/MediaType;)Lokhttp3/RequestBody;

<!--ok http client-->
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.10.0</version>
</dependency>

2. 经过

根据错误信息可知,找不到该方法,但是本地能正常运行,怀疑是打包时引入的版本并非是4.10.0版本,于是查看pom.xml文件是否有okhttp的其他版本。

java.lang.NoSuchMethodError: okhttp3.RequestBody.create()_NoSuchMethod

查看后发现只有这一个4.10.0......,这就尴尬了,于是我将okhttp换成3.x版本

<!--ok http client-->
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>3.14.9</version>
</dependency>

发现所有的okhttp 3.x RequestBody.create()方法,MediaType是第一个 参数。

java.lang.NoSuchMethodError: okhttp3.RequestBody.create()_okhttp3_02

而okhttp 4.10.0 显示 RequestBody.create(okhttp3.MediaType, java.lang.String) 方法已过时,建议使用 MediaType在后面的方法, 不管了还能用就先试试。

java.lang.NoSuchMethodError: okhttp3.RequestBody.create()_java_03

3. 结果

java.lang.NoSuchMethodError: okhttp3.RequestBody.create()_java_04

4. 总结

最后解决办法就是使用了okhttp 4.10.0版本的过时方法: RequestBody.create(okhttp3.MediaType, java.lang.String),我怀疑是:

原因1:打包时将3.x打进来了,但是查不到。

原因2:pom.xml <build></build>写的不对。


利用tomcat运行jsp文件时,出现错误Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED Error: Could n

利用tomcat运行jsp文件时,出现错误Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED Error: Could n