【发布时间】:2019-05-27 12:24:38
【问题描述】:
java 8、gradle 5、kotlin 1.2.71、junit 5.3.2、intellij 2018.03 12 月 17 日,将 kotlin 和 java 文件保存在同一个 src 目录中 文件结构为:
.
├── build.gradle
├── gradle
│ └── wrapper...
│
├── gradlew
├── gradlew.bat
└── src
├── main
│ ├── kotlin
│ │ └─ ...
│ └── resources
│ └── application.yml
└── test
└── kotlin
└────── xxx
└── shop
└── order
├── Junit5Kotlin.kt
├── Junit5Test.java
├── OrderITest.kt
├── ProductITest.kt
└── Util.java
来自 intellij(“运行所有测试”单击“测试”目录)一切正常。来自./gradlew test test kotlin classes don't see java test util classes:
xxx.shop.order.Manual > should return client error on bad input FAILED
java.lang.NoClassDefFoundError: xxx/shop/order/Util
at xxx.shop.order.Manual.before(ProductITest.kt:229)
Caused by:
java.lang.ClassNotFoundException: xxx.shop.order.Util
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 1 more
这不是编译时错误,而是运行时错误,因为其他测试成功完成
我的 build.gradle 的潜在重要部分:
apply plugin: 'kotlin'
apply plugin: 'kotlin-spring'
apply plugin: 'kotlin-jpa'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'xxx.shop'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
compileKotlin {
kotlinOptions {
freeCompilerArgs = ["-Xjsr305=strict"]
jvmTarget = "1.8"
}
}
compileTestKotlin {
kotlinOptions {
freeCompilerArgs = ["-Xjsr305=strict"]
jvmTarget = "1.8"
}
}
test {
useJUnitPlatform()
}
【问题讨论】: