java - 在 Java 7 上使用 OkHttpClient v3.12.x 时无法解析类型 java.time.Duration
问题描述
我正在为一个为 Java 7 编译的项目开发。
在这个项目中,我使用了与 Java 7 兼容的 OkHttpClient v3.12.13(如此处所述)。然而,这些行在 Eclipse 编辑器中会产生错误:
private static final OkHttpClient GLOBAL_OK_HTTP_CLIENT = new OkHttpClient.Builder()
.readTimeout(10, TimeUnit.SECONDS)
.build();
错误是这样的:
The type java.time.Duration cannot be resolved. It is indirectly referenced from required .class files
此错误仅由编辑器显示。java.time
事实上,当我使用 CLI(在 Eclipse 之外)编译我的项目时,对于对包的隐式引用,我没有收到任何错误。
我知道在 Java 7 中没有java.time
包。事实上,我没有在我的代码中使用它,它只是被 OkHttp 库隐式引用(如错误消息所述)。
有没有办法在 Eclipse 上修复这个错误?
这就是我在 Eclipse 上配置编译器合规性的方式:
请注意,我无法升级到较新的 Java 版本。
解决方案
java.time类内置于 Java 8 及更高版本。您正在将应用程序部署到 Java 7。该版本的 Java 缺少java.time.Duration
调用库的代码调用的类。
您声称该库支持 Java 7。如果这是真的,则该库必须有一个开关以避免使用 Java 7 中不可用的类。
您未正确配置 IDE 以允许在比您部署的版本更高的版本中进行编程。这是你应该解决的问题。如果在 Java 7 上部署,则为 Java 7 编译。请参阅问题,如何让 eclipse 为 Java 使用不同的编译器版本?.
当然,最好的解决方案是迁移到现代版本的 Java。Java 7 已于 2015-04 年结束生命周期。我强烈建议迁移到长期支持 (LTS) 版本。目前这将是 Java 8 和 Java 11。
如果它是您自己使用java.time类的代码,我建议将ThreeTen-Backport库添加到您的项目中。该库提供了大多数java.time功能以及几乎相同的 API,可用于 Java 6 和 Java 7。但我猜这不会满足您所讨论的库,尽管您可能想要验证。
推荐阅读
- php - Symfony 日志在 Symfony 配置文件中不可见
- javascript - 如何在jquery中将匹配特定条件的项目组合在一起
- macos - 避免每次重新编译后都必须重新输入密码才能从 macOS 命令行应用程序访问钥匙串项?
- sql-server - 是否会对从 Table-Val 返回的结果集写入“WHERE”的性能产生负面影响。函数而不是查询本身?
- php - wpbakery元素短代码在php中实现
- html - 如何将 2 个类设置为
- python - 如何将系统托盘添加到我的 tkinter 应用程序并避免使用大量 pywin32 代码(仅在 Windows 上)?
- python - Curve_Fit 函数似乎不起作用。我有相同长度的数组中的 xdata 和 ydata,但曲线拟合会产生错误。我的错误是什么?
- ios - iOS Spin UIImageView 在随机位置减速运动
- laravel - 参数 1 必须是字符串类型或 null,给定对象