混合Java和Kotlin与gradle-NoClassDefFoundError
我试图编译一个gradleprojet,其中我在src/main/java和src/main/kotlin下混合了kotlin和java文件混合Java和Kotlin与gradle-NoClassDefFoundError,java,gradle,kotlin,Java,Gradle,Kotlin,我试图编译一个gradleprojet,其中我在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' sourceCo
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类的NoClassDefFound错误:
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
回购协议可以在这里找到
使用未知命令运行的某些未知代码会导致异常,并显示未知消息和未知堆栈跟踪。很难帮上忙。你应该知道,有了4K+rep点,我从类的javadoc中添加了更多的细节:如果Java虚拟机或类加载器实例试图加载类的定义(作为普通方法调用的一部分或使用新表达式创建新实例的一部分),并且找不到类的定义,则抛出。编译当前执行的类时,已存在搜索的类定义,但无法再找到该定义。换句话说,编译代码的类路径与运行时的类路径不同。类路径相同,littlechisels.main。尽管build\classes\java\main为空