java 15 的 jOOQ:org.jooq 中的接口 org.jooq.Record 和 java.lang 中的 class java.lang.Record 匹配
jOOQ with java 15: both interface org.jooq.Record in org.jooq and class java.lang.Record in java.lang match
我刚刚尝试将我的项目升级到 Java 15,现在我收到以下错误:
both interface org.jooq.Record in org.jooq and class java.lang.Record in java.lang match
有没有人有解决这个问题的经验?
Java 14 人介绍records。 java.lang.Record
是 record
的超类,它与 org.jooq.Record
冲突,因为 java.lang
中的每个类型都是自动导入的。有两种解决方案:
- 使用完全限定名称而不是
Record
并删除导入。例如:org.jooq.Record
而不是 Record
。 (不要忘记删除 import
语句)。
- 将
org.jooq.Record
重新声明为特定内容。 (我认为这在你的情况下是不可能的,因为它是一个 third-party 库。)
除了什么:
Import-on-demand 不再适用于 Record
建议向您的 import-on-demand 语句添加显式导入:
import org.jooq.*;
import org.jooq.Record;
或完全停止使用 import-on-demand。例如。在 Eclipse 中,您可以使用“组织导入”功能将所有 import-on-demand 语句扩展为显式导入,具体取决于您实际使用的类型。
使用类型推断
另一种防止局部变量发生此问题的方法是使用 var
:
var record = ctx.fetchOne(TABLE, TABLE.ID.eq(1));
现在您不必导入类型。当然,这不适用于成员类型、方法参数和 return 类型。
我们将尝试更好地记录这一点:https://github.com/jOOQ/jOOQ/issues/10646
我刚刚尝试将我的项目升级到 Java 15,现在我收到以下错误:
both interface org.jooq.Record in org.jooq and class java.lang.Record in java.lang match
有没有人有解决这个问题的经验?
Java 14 人介绍records。 java.lang.Record
是 record
的超类,它与 org.jooq.Record
冲突,因为 java.lang
中的每个类型都是自动导入的。有两种解决方案:
- 使用完全限定名称而不是
Record
并删除导入。例如:org.jooq.Record
而不是Record
。 (不要忘记删除import
语句)。 - 将
org.jooq.Record
重新声明为特定内容。 (我认为这在你的情况下是不可能的,因为它是一个 third-party 库。)
除了什么
Import-on-demand 不再适用于 Record
建议向您的 import-on-demand 语句添加显式导入:
import org.jooq.*;
import org.jooq.Record;
或完全停止使用 import-on-demand。例如。在 Eclipse 中,您可以使用“组织导入”功能将所有 import-on-demand 语句扩展为显式导入,具体取决于您实际使用的类型。
使用类型推断
另一种防止局部变量发生此问题的方法是使用 var
:
var record = ctx.fetchOne(TABLE, TABLE.ID.eq(1));
现在您不必导入类型。当然,这不适用于成员类型、方法参数和 return 类型。
我们将尝试更好地记录这一点:https://github.com/jOOQ/jOOQ/issues/10646