gpt4 book ai didi

java - JOOQ用于SQL查询写入: Stack overflow exception in tests

转载 作者:行者123 更新时间:2023-12-02 06:13:10 24 4
gpt4 key购买 nike

相同的代码可以在 psvm 中的 JOOQ 中运行,但不能在 junit 测试中运行。

public static void main(String[] args) {
InsertSetMoreStep<Record> query = DSL.using(SQLDialect.MYSQL)
.insertInto(table("TABLE_NAME"))
.set(field("FIELD"), "field");
System.out.println("query : " + query.getSQL());
}


@Test
public void tt() {
InsertSetMoreStep<Record> query = DSL.using(SQLDialect.MYSQL)
.insertInto(table("TABLE_NAME"))
.set(field("FIELD"), "field");
System.out.println("query : " + query.getSQL());
}

运行测试会出现堆栈溢出异常:

LClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:367)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:455)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:367)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

原因是什么以及如何修复测试?

最佳答案

这实际上可能是一个真正的 stackoverflow。在这种情况下,您可以通过使用参数增加堆栈大小来修复它:

-Xss4m

尝试解释一下:据我所知,JOOQ 从数据库结构生成 java 类。如果 JOOQ 创建大量嵌套类(这对于某些数据库设计来说很可能),则类加载器会递归地加载这些内部类,这可能会导致堆栈溢出,因为它是资源密集型的。

我不太了解 JOOQ,也无法重现它,但很高兴看到真正的 stackoverflow :-)

关于java - JOOQ用于SQL查询写入: Stack overflow exception in tests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32315105/

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