java - 在 JDK 7 上运行的改造和 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();
----------------------分级--------------
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 类文件:
Java SE 10 = 54
Java SE 9 = 53
Java SE 8 = 52
Java SE 7 = 51
Java SE 6.0 = 50
因为在编译期间,您在运行时使用更高的 JDK 和更低的 JDK。
推荐阅读
- java - XSLT:添加名称空间、复制内容、更改复制内容的值
- java - 实现 150MB/秒恒速文件写入的硬件解决方案?
- javascript - Angular 5 TypeScript Bootstrap 下拉菜单无法通过 JavaScript 工作
- c# - 使用 DocumentFormat.OpenXml 替换 word 中的数据
- php - PHP password_hash() 如何通过 PHP_DEFAULT 确定使用哪种算法?
- pandas - distutils.errors.DistutilsPlatformError:需要 Microsoft Visual C++ 14.0
- angularjs - XSRF-TOKEN 在 AngularJS + Spring Boot 中使用 HttpOnly 进行保护,但不包含在返回的请求中
- sql - oracle % 函数中的通配符
- sharepoint - 有人知道如何以编程方式将文件附加到 sharepoint 中的文档项上吗?
- arrays - 如何在 GoLang 中创建多维键值数组/切片