Смешивание Java И Kotlin В Проекте Gradle, Kotlin Не Может Найти Класс Java

как говорится в названии, я пытаюсь смешать Java и Kotlin в одном проекте. Вот хороший пример. mixed-java-Котлин-Привет-мир. Все работает правильно, кроме kotlin не может найти ни одного из моих классов Java, которые находятся в src/main/java/somepackage/SomeClass.java

что было бы причиной этого?

это ошибка, которую я получаю. enter image description here

когда я пытаюсь отредактировать свою сборку.gradle, это показывает Я неправильно пишу kotlin и даю мне ошибки на плагине, но я копирую и вставляю с сайта kotlins. enter image description here

моя сборка.Gradle в выглядит так

group 'Battle-OS'
version '1.0-SNAPSHOT'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.2-1"
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'kotlin'

repositories {
    mavenCentral()
}

dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:1.0.2-1"
testCompile  'junit:junit:4.11'
testCompile "org.jetbrains.kotlin:kotlin-test-junit:1.0.2-1"

compile 'org.slf4j:slf4j-api:1.7.18'
testCompile 'junit:junit:4.12'

    // https://mvnrepository.com/artifact/com.google.code.gson/gson
compile group: 'com.google.code.gson', name: 'gson', version: '2.7'

// https://mvnrepository.com/artifact/com.google.guava/guava
compile group: 'com.google.guava', name: 'guava', version: '19.0'

// https://mvnrepository.com/artifact/io.netty/netty-all
compile group: 'io.netty', name: 'netty-all', version: '4.0.37.Final'

// https://mvnrepository.com/artifact/com.moandjiezana.toml/toml4j
compile group: 'com.moandjiezana.toml', name: 'toml4j', version: '0.6.0'

// https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib
compile group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: '1.0.2-1'

}

вместо того, чтобы начинать пытаться сделать эту работу над большим проектом. Я попытался сделать эту работу, создав новый проект gradle. Я создал тестовый класс java, который содержит метод для печати hello world. Затем я создал тестовый класс kotlin, который создает новый объект java класс и вызывает метод из класса java для печати hello world.

Это решает проблему, которую я имел выше, теперь я могу вызвать классы java из kotlin и kotlin из java, но теперь это дает мне ошибки при запуске.

enter image description here

Exception in thread "main" java.lang.NoClassDefFoundError:      kotlin/jvm/internal/Intrinsics
at AKotlinClassKt.main(AKotlinClass.kt)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more

1 ответов


вы должны переопределить sourceSets, как это

sourceSets {
    main.java.srcDirs = []
    main.kotlin.srcDirs = ['src/main/java', 'src/main/kotlin']
    main.resources.srcDirs = ['src/main/resources']
}