混合Java和Kotlin与gradle-NoClassDefFoundError

混合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

我试图编译一个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'

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为空