Okhttp3 jar 缺少 okio?

Okhttp3 jar missing okio?

我正在尝试制作一个简单的 Java 程序来上传一堆我必须 imgur 的图像。但是我 运行 遇到了一个又一个问题,不能让 okhttp 正常工作。在这一点上,我尝试解决这个问题所花费的时间比我编写程序本身所花费的时间要长得多。我对这类东西很陌生,所以请耐心等待。

所以,现在我有来自 this tutorial 的以下代码:

RequestBody requestBody = new MultipartBody.Builder()
                .addFormDataPart("new", "This is my new TODO")
                .addFormDataPart("image", "attachment.png",
                        RequestBody.create(new File(""), MediaType.parse("image/png"))
                )
                .setType(MultipartBody.FORM)
                .build();

RequestBody.create() 部分出错:

The type okio.ByteString cannot be resolved. It is indirectly referenced from required .class files

谷歌搜索此错误时,我发现 this page 说我缺少 okio 库。我认为这将包含在 okhttp jar 中。我还是下载了okio jar并将其添加到我的项目中,但是错误没有改变。我不知道还有什么问题。

好的,我知道你的问题了。

Okio 来自 3.0.0-Alpha-10 及以上的源代码已用 Kotlin.

重写

您的代码需要 ByteString.class,为此您需要一个 Java .class.

使用这个版本 https://repo1.maven.org/maven2/com/squareup/okio/okio/3.0.0-alpha.9/ 这个是在迁移到 Kotlin 之前 Java 写的。

下面的代码将编译:

package example;

import java.io.File;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;


public class OkHttpExample {

    public void example() {
        
        RequestBody requestBody = new MultipartBody.Builder()
                .addFormDataPart("new", "This is my new TODO")
                .addFormDataPart("image", "attachment.png",
                        RequestBody.create(new File(""), MediaType.parse("image/png"))
                )
                .setType(MultipartBody.FORM)
                .build();
    }
    
}

查看构建路径依赖项:

进入构建路径后,您可以在 eclipse 中打开 jar 文件,并查看内容:ByteString.class 包含: