Retrofit2 java.lang.NoClassDefFoundError:JAVA中的okhttp3 / Call $ Factory

OOD*_*all 4 java rest imgur retrofit2 okhttp3

我不是在开发Android应用程序,
而是在编写一些JAVA代码来支持Imgur API服务。

public interface ImgurAPI {
    String server = "https://api.imgur.com";
    String BASE64 = "base64";

    @POST("/3/upload")
    void postImage(
            @Header("Authorization") String auth,
            @Query("title") String title,
            @Query("description") String description,
            @Query("type") String type,
            @Body String base64Image,
            Callback<ImageResponse> cb
    );
Run Code Online (Sandbox Code Playgroud)

}

主要:

public static void main(String[] args) {

    try{
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ImgurAPI.server)
                .build();
        ImgurAPI myAPI = retrofit.create(ImgurAPI.class);
        String base64Image = new ImageReader(PATH).getBase64String();
        myAPI.postImage(AUTH, "Hi", "Test", ImgurAPI.BASE64, base64Image, new MyCallBack());

    }catch(Exception err){
        err.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

和异常抛出:

    Exception in thread "main" java.lang.NoClassDefFoundError: okhttp3/Call$Factory
    at Main.main(Main.java:14)

Caused by: java.lang.ClassNotFoundException: okhttp3.Call$Factory
Run Code Online (Sandbox Code Playgroud)

我发现了很多Android解决方案。所以我想知道Retrofit是否JAVA中可用。
谢谢 。

OOD*_*all 5

我解决了这个问题,如果您正在编写Java(仅Java),并且下载了Retrofit2的Jar,它可能不包含某些Android Studio中内置的库,因此您必须手动下载它们。

  1. OkHttp3 OkHttp3 3.0.0 Jar下载
  2. Okio Okio 1.6.0 Jar下载
  3. Retrofit-converter gson Retrofit-converter gson-2 beta3 Jar下载 (如果要转换其他类型的数据,只需在Retrofit中下载其他Jars )
  4. Gson Gson 2.2.3 Jar下载

导入jar文件,然后它可以工作

确保您拥有所有在此处输入图片说明


小智 5

如果您在 Java EE 项目中使用 Influxdb-java.jar 时出现此错误并寻找解决方案时发现这篇文章,您将需要以下依赖项:

解决这个问题很烦人,所以希望它对某人有所帮助。