【问题标题】:StackOverflowError when running H2 unit test in NetBeans在 NetBeans 中运行 H2 单元测试时出现 StackOverflowError
【发布时间】:2012-06-20 12:16:28
【问题描述】:

当我在使用 H2 数据库的 NetBeans 中运行或调试单元测试时,我收到 StackOverflowError:

...

Caused by: java.lang.StackOverflowError
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at org.h2.command.Command.executeUpdate(Command.java:230)
    at org.h2.command.CommandList.update(CommandList.java:44)
    at org.h2.command.CommandList.executeRemaining(CommandList.java:39)
    at org.h2.command.CommandList.update(CommandList.java:45)
    at org.h2.command.CommandList.executeRemaining(CommandList.java:39)
    at org.h2.command.CommandList.update(CommandList.java:45)
    at org.h2.command.CommandList.executeRemaining(CommandList.java:39)
    at org.h2.command.CommandList.update(CommandList.java:45)
    at org.h2.command.CommandList.executeRemaining(CommandList.java:39)
    at org.h2.command.CommandList.update(CommandList.java:45)
    at org.h2.command.CommandList.executeRemaining(CommandList.java:39)
    at org.h2.command.CommandList.update(CommandList.java:45)
    at org.h2.command.CommandList.executeRemaining(CommandList.java:39)
    at org.h2.command.CommandList.update(CommandList.java:45)
    at org.h2.command.CommandList.executeRemaining(CommandList.java:39)

...等

当我从 ant 运行完整的单元测试时,我没有问题。从 IntelliJ 运行单个单元测试也可以正常工作。

感谢您的帮助。请不要回答“切换到 IntelliJ”之类的问题,我想继续使用我最喜欢的 IDE。

【问题讨论】:

  • 您是否有机会使用两个不同的 VM 在 NetBeans、命令行和 IntelliJ IDE 中运行测试?
  • 嗯,你知道这是什么SQL语句吗?也许这是一个非常非常长的。要找出答案,您可以将 ;TRACE_LEVEL_FILE=3 附加到数据库 URL 并在 dbName.trace.db 文件中查看。
  • 声明很长,但为什么在 NetBeans 中会出现这样的问题?
  • 可能是因为 NetBeans 中的默认堆栈大小较小。语句到底有多长(以字符和子语句的数量计)?

标签: java database unit-testing junit h2


【解决方案1】:

通过增加JVM的堆栈大小来解决。在文件->项目属性->运行中,我将带有 -Xss 的 VM 选项设置为更大的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 2015-11-30
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 2013-01-01
    • 1970-01-01
    相关资源
    最近更新 更多