java - 使用 gradle 混合 Java 和 Kotlin - NoClassDefFoundError
问题描述
我正在尝试编译一个 gradle projet,我在 src/main/java 和 src/main/kotlin 下混合了 kotlin 和 java 文件。
plugins {
id 'java'
id 'org.jetbrains.kotlin.jvm' version "1.3.41"
}
ext {
kotlinVersion = '1.3.41'
}
group 'github.littlechisels'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
test {
useJUnitPlatform()
}
sourceSets {
main.java.srcDirs = ['src/main/java']
main.kotlin.srcDirs = ['src/main/java', 'src/main/kotlin']
main.resources.srcDirs = []
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion"
implementation "org.jetbrains.kotlin:kotlin-test:$kotlinVersion"
...
testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlinVersion"
testImplementation("org.junit.jupiter:junit-jupiter:5.5.0")
testRuntime ('org.junit.jupiter:junit-jupiter-engine:5.5.0')
testImplementation ('org.junit.jupiter:junit-jupiter-api:5.5.0')
test.useJUnitPlatform()
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
但是 build\classes\java\main 是空的,而 kotlin one 不是
项目使用 IntelliJ 和 Gradle 构建良好,但是当我运行 littlechisels.main.Converter 时,我得到一个关于 java 类的 NoClassDefFoundError :
Exception in thread "main" java.lang.NoClassDefFoundError: littlechisels/main/WorldSave
at littlechisels.main.Converter.main(Converter.kt:20)
Caused by: java.lang.ClassNotFoundException: littlechisels.main.WorldSave
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 1 more
可以在这里找到回购 https://github.com/vinz243/littlechisels
解决方案
推荐阅读
- java - android studio生成签名apk问题(找不到kotlin-compiler-27.0.1.jar)
- data-structures - 我们需要最短路径树的任何现实问题?
- shell - shell中的sql语句被pwd中的文件名替换
- r - 计算 3D 网格的旋转平移
- javascript - 元素添加到 DOM 但不可见
- php - 如何将 CryptoJS.AES.encrypt NodeJS 转换为 PHP
- r - 如何防止 geom_bar 中的条与同一个变量重叠?
- javascript - Javascript 在右键单击时切换默认和自定义上下文菜单
- angular - 想要使用自定义颜色为每个系列赋予不同的条形颜色
- ab-initio - 在 Abinitio 中声明日期向量