Retrofit2 java.lang.NoClassDefFoundError:okhttp3 /在JAVA中调用$ Factory

问题描述 投票:3回答:2

我没有开发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
    );

}

主要:

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();
    }
}

抛出异常:

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

Caused by: java.lang.ClassNotFoundException: okhttp3.Call$Factory

我发现了很多Android的解决方案。所以我想知道只有JAVA才能提供Retrofit。 谢谢 。

java rest retrofit2 okhttp3 imgur
2个回答
4
投票

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

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

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

确保你得到了所有的enter image description here


2
投票

如果在Java EE项目中使用Influxdb-java.jar时遇到此错误后查找解决方案时发现此帖子,则需要以下依赖项:

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

© www.soinside.com 2019 - 2024. All rights reserved.