gpt4 book ai didi

java - 使用 jOOQ 3.6+、纯 SQL 和 javac 编译器进行缓慢编译

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:27:17 26 4
gpt4 key购买 nike

<分区>

以下错误已报告给 jOOQ user group .这似乎确实是 javac 编译器中的一个错误,与编译器在使用内部 DSL(如 jOOQ)的上下文中完成的相当“复杂”的类型推断工作有关。是。

鉴于该错误的一般性质,我将其记录在 Stack Overflow 上,以供其他人在遇到它时帮助应用解决方法。在高层次上,这似乎是由于 JEP 101: Generalized Target-Type Inference 而导致的编译器性能回归。 ,它是在 Java 8 中引入的,过去曾引起 1-2 个问题。

使用 Maven 和 jOOQ 3.7 在 Windows 上使用 jdk 1.8.0_60 或 1.8.0_66 编译以下相对无害的类大约需要 20 秒:

import static org.jooq.impl.DSL.field;

import org.jooq.SQLDialect;
import org.jooq.impl.DSL;

public class Test {
public void method() {
DSL.using(SQLDialect.MYSQL)
.select()
.where(DSL.trueCondition())
.and(field("client.id").eq(field("client_id")))
.and(field("client.id").eq(field("client_id")))
.and(field("client.id").eq(field("client_id")))
.and(field("client.id").eq(field("client_id")))
.and(field("client.id").eq(field("client_id")))
.and(field("client.id").eq(field("client_id")))
.and(field("client.id").eq(field("client_id")))
.and(field("client.id").eq(field("client_id")))
.and(field("client.id").eq(field("client_id")))
.and(field("client.id").eq(field("client_id")))
;
}
}

pom.xml:

<project 
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>compilation-issues</groupId>
<artifactId>compilation-issues</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq</artifactId>
<version>3.7.1</version>
</dependency>
</dependencies>
</project>

没有出现该问题时的配置:

  • 使用 jOOQ 3.5(3.6.0 之前的任何版本)
  • 将 jOOQ 与生成的类一起使用,而不是上面的“纯 SQL”API
  • 使用 Java 7
  • 使用 Eclipse 编译器

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com