Spring boot Intellij-thymeleaf在kotlintest上疯了

Spring boot Intellij-thymeleaf在kotlintest上疯了,spring-boot,intellij-idea,thymeleaf,kotlintest,Spring Boot,Intellij Idea,Thymeleaf,Kotlintest,我正在用Intellij在kotlin中开发一个spring boot应用程序,使用springMVC和thymeleaf。非常简单,在我尝试运行一些测试之前,一切都很正常。而这些测试甚至没有关系。事实上,仅仅实例化一个测试就足以让thymeleaf发疯。它抛出数千行异常 我制作了一个git存储库,其中包含一个最小的项目设置,在这里重现了这个问题: 以下是我的两个版本的“测试”: 普通少年: class ContentServiceTest { @Test fun test()

我正在用Intellij在kotlin中开发一个spring boot应用程序,使用springMVC和thymeleaf。非常简单,在我尝试运行一些测试之前,一切都很正常。而这些测试甚至没有关系。事实上,仅仅实例化一个测试就足以让thymeleaf发疯。它抛出数千行异常

我制作了一个git存储库,其中包含一个最小的项目设置,在这里重现了这个问题:

以下是我的两个版本的“测试”:

普通少年:

class ContentServiceTest {
    @Test
    fun test() {
    }
}
工作正常,Intellij中的控制台输出:

Connected to the target VM, address: '127.0.0.1:45773', transport: 'socket'
Disconnected from the target VM, address: '127.0.0.1:45773', transport: 'socket'

Process finished with exit code 0
但当我切换到Kotlintest时:

class ContentServiceTest :StringSpec()
随之而来的是混乱:

13:24:24.904 [main] DEBUG org.reflections.Reflections - could not scan file org/thymeleaf/dtd/standard/xhtml1-strict.dtd in url file:/home/benedict/.gradle/caches/modules-2/files-2.1/org.thymeleaf/thymeleaf/2.1.6.RELEASE/c362b4ecbeddc86a0cb7e767a88ce27e9c8147e6/thymeleaf-2.1.6.RELEASE.jar with scanner TypeAnnotationsScanner
org.reflections.ReflectionsException: could not create class object from file org/thymeleaf/dtd/standard/xhtml1-strict.dtd
    at org.reflections.scanners.AbstractScanner.scan(AbstractScanner.java:32)
    at org.reflections.Reflections.scan(Reflections.java:253)
    at org.reflections.Reflections.scan(Reflections.java:202)
    at org.reflections.Reflections.<init>(Reflections.java:123)
    at org.reflections.Reflections.<init>(Reflections.java:168)
    at io.kotlintest.Project.discoverProjectConfig(Project.kt:15)
    at io.kotlintest.Project.<init>(Project.kt:27)
    at io.kotlintest.Project.<clinit>(Project.kt:8)
    at io.kotlintest.KTestJUnitRunner.<init>(KTestJUnitRunner.kt:10)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:49)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: org.reflections.ReflectionsException: could not create class file from xhtml1-strict.dtd
    at org.reflections.adapters.JavassistAdapter.getOfCreateClassObject(JavassistAdapter.java:102)
    at org.reflections.adapters.JavassistAdapter.getOfCreateClassObject(JavassistAdapter.java:24)
    at org.reflections.scanners.AbstractScanner.scan(AbstractScanner.java:30)
    ... 22 common frames omitted
Caused by: java.io.IOException: bad magic number: 3c212d2d
    at javassist.bytecode.ClassFile.read(ClassFile.java:825)
    at javassist.bytecode.ClassFile.<init>(ClassFile.java:154)
    at org.reflections.adapters.JavassistAdapter.getOfCreateClassObject(JavassistAdapter.java:100)
    ... 24 common frames omitted
13:24:24.904[main]DEBUG org.reflections.reflections-无法扫描url文件:/home/benedict/.gradle/caches/modules-2/files-2.1/org.thymeleaf/thymeleaf/2.1.6.RELEASE/c362b4ecbeddc86a0cb7e767a88ce27e9c8147e6/thymeleaf-2.1.6.RELEASE.jar中的文件,带有扫描仪类型注释
org.reflections.ReflectionsException:无法从文件org/thymeleaf/dtd/standard/xhtml1-strict.dtd创建类对象
位于org.reflections.scanners.AbstractScanner.scan(AbstractScanner.java:32)
位于org.reflections.reflections.scan(reflections.java:253)
位于org.reflections.reflections.scan(reflections.java:202)
位于org.reflections.reflections.(reflections.java:123)
位于org.reflections.reflections.(reflections.java:168)
位于io.kotlintest.Project.discoverProjectConfig(Project.kt:15)
在io.kotlintest.Project.(项目kt:27)
在io.kotlintest.Project.(项目kt:8)
在io.kotlintest.KTestJUnitRunner(KTestJUnitRunner.kt:10)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
位于org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
位于org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
位于org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
位于org.junit.internal.builders.AllDefaultPossibilityBuilder.runnerForClass(AllDefaultPossibilityBuilder.java:26)
位于org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
位于org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
位于com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:49)
位于com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
位于com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
位于com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
原因:org.reflections.ReflectionsException:无法从xhtml1-strict.dtd创建类文件
位于org.reflections.adapters.JavassistAdapter.getOfCreateClassObject(JavassistAdapter.java:102)
位于org.reflections.adapters.JavassistAdapter.getOfCreateClassObject(JavassistAdapter.java:24)
位于org.reflections.scanners.AbstractScanner.scan(AbstractScanner.java:30)
... 省略22个公共帧
原因:java.io.IOException:错误的幻数:3c212d2d
位于javassist.bytecode.ClassFile.read(ClassFile.java:825)
位于javassist.bytecode.ClassFile.(ClassFile.java:154)
位于org.reflections.adapters.JavassistAdapter.getOfCreateClassObject(JavassistAdapter.java:100)
... 省略24个公共帧
这个错误被反复抛出。我重新配置了10000行的终端缓冲区,但输出仍然不适合

但我注意到gradlew测试运行时没有问题,因此Intellij IDEA似乎也在其中发挥了作用

这就是我的难题:spring boot、thymeleaf、kotlintest和IDEA都参与其中。移除其中任何一个,都没有问题。我不知道谁是罪魁祸首,否则我可能会在适当的地方提交问题报告


以前是否有人遇到过此问题,或者有预感问题可能在哪里?

如果有人遇到类似问题,升级到3.1.0或3.0.0将解决您的问题。
请参见

请在上提交错误。升级到KotlinTest 3.0.6,您的问题可能会消失。不幸的是,没有,但肯定很好。我在向KotlinTest工作人员报告问题之前测试了它。Jetbrains认为问题最有可能出现在那里: