正如标题所说,我试图在一个项目中混合使用Java和Kotlin.这里有一个很好的例子.mixed-java-kotlin-hello-world.除了kotlin在src/main/Java/somepackage/SomeClass中找不到我的任何Java类之外,其他一切都正常工作.JAVA

What would be the cause of this?

这就是我犯的错误.

当我试图编辑我的构建时.gradle,这表明我没有正确拼写kotlin,并在插件上给了我错误,但我正在从kotlin的网站上复制和粘贴.

My build.gradle looks like this

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'

}

而不是在一个更大的项目上开始try .我试图通过创建一个新的gradle项目来实现这一点.我创建了一个测试java类,其中包含打印hello world的方法.然后我创建了一个test kotlin类,它创建了java类的一个新对象,并从java类调用该方法来打印hello world.

这解决了我上面的问题,现在我可以调用来自kotlin的java类,也可以从java调用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

推荐答案

you should override sourceSets like this

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

Kotlin相关问答推荐

如何确保Kotlin子类已完成初始化?

Mockk:对同一函数进行两次存根会忽略第一个行为

mutableStateOf 和 mutableStateListOf 有什么区别?

mutableStateOf 在 Jetpack Compose 中不记住 API 的情况下保持重组后的值

在 Kotlin 中,为什么在 `+` 之前但在 `.` 之前没有换行符?

JetPack Compose:添加点击持续时间

为什么 KFunction2 在 Kotlin 中不是可表示类型?

Kotlin 日期格式从一种更改为另一种

TestContainers PostgreSQLContainer 与 Kotlin 单元测试:Not enough information to infer type variable SELF

Kotlin:泛型、反射以及类型 T 和 T:Any 之间的区别

有没有办法在spring webflux和spring data react中实现分页

调用单元测试验证伴随对象方法

在 Koin 中提供一个 Instance 作为其接口

Kotlin使用运行时断言进行空判断?

Android Jetpack导航,另一个主机片段中的主机片段

Kotlin:具有多个不同类型设置器的单个属性

在kotlin中初始化类变量的正确位置是什么

Kotlin数据类打包

在android java类中使用Kotlin扩展

Kotlin中默认导入哪些包/函数?