微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在JDK 7上运行的Retrofit和RxJava

如何解决在JDK 7上运行的Retrofit和RxJava

我正在使用Java开发API,我正在使用Retrofit2和RxJava,首先我为JDK 8对其进行编程,现在我不得不将其更改为JDK 7,当它运行时,它会不断抛出此异常:

Exception in thread "main" java.lang.UnsupportedClassversionError: retrofit2/CallAdapter$Factory : Unsupported major.minor version 52.0
at java.lang.classLoader.defineClass1(Native Method)
at java.lang.classLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.urlclassloader.defineClass(urlclassloader.java:449)
at java.net.urlclassloader.access$100(urlclassloader.java:71)
at java.net.urlclassloader$1.run(urlclassloader.java:361)
at java.net.urlclassloader$1.run(urlclassloader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.urlclassloader.findClass(urlclassloader.java:354)
at java.lang.classLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.classLoader.loadClass(ClassLoader.java:358)
at networking.client.RetrofitClient.newInstance(RetrofitClient.java:14)
at tetimer.TeCampChecker.<init>(TeCampChecker.java:19)
at tetimer.TeServerTimer.scheduleTime(TeServerTimer.java:26)
at main.Main.main(Main.java:54)

我认为因为RxJava适配器正在使用JDK 8和我正在使用的转换器工厂,所以这是我的代码

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(getBaseUrl())
            .client(okHttpClient)
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .addConverterFactory(tikxmlConverterFactory.create())
            .addConverterFactory(GsonConverterFactory.create())
            .build();

---------------------- GRADLE --------------

def tikVersion = "0.8.13"
def retrofitVersion = "2.9.0"

compile "com.squareup.retrofit2:retrofit:${retrofitVersion}"
compile "com.squareup.retrofit2:converter-gson:${retrofitVersion}"
compile "com.squareup.retrofit2:adapter-rxjava2:${retrofitVersion}"
compile 'com.squareup.okhttp3:logging-interceptor:4.8.1'

compileOnly("com.tickaroo.tikxml:annotation:${tikVersion}")
compile "com.tickaroo.tikxml:core:${tikVersion}"
compile "com.tickaroo.tikxml:retrofit-converter:${tikVersion}"

annotationProcessor "com.tickaroo.tikxml:auto-value-tikxml:${tikVersion}"
annotationProcessor "com.tickaroo.tikxml:processor:${tikVersion}"

compile 'io.reactivex.rxjava3:rxjava:3.0.0'

谁能告诉我发生了什么事以及如何解决它。

解决方法

问题是由于Java版本不匹配所致。引用WikipediaJava class file:

Java SE 10 = 54

Java SE 9 = 53

Java SE 8 = 52

Java SE 7 = 51

Java SE 6.0 = 50

因为在编译期间,您在运行时使用的是较高的JDK,而使用的是较低的JDK。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。