Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Gradle项目中混合了Java和Kotlin,Kotlin找不到Java类_Java_Gradle_Kotlin - Fatal编程技术网

在Gradle项目中混合了Java和Kotlin,Kotlin找不到Java类

在Gradle项目中混合了Java和Kotlin,Kotlin找不到Java类,java,gradle,kotlin,Java,Gradle,Kotlin,正如标题所说,我试图在一个项目中混合使用Java和Kotlin。这里有一个很好的例子。除了kotlin在src/main/Java/somepackage/SomeClass.Java中找不到我的任何Java类之外,一切都正常工作 这是什么原因 这就是我得到的错误。 当我试图编辑我的build.gradle时,它显示我没有正确拼写kotlin,并且在插件上给了我错误,但我正在从kotlins网站复制和粘贴。 我的身材,格雷德尔看起来像这样 group 'Battle-OS' version

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

这是什么原因

这就是我得到的错误。

当我试图编辑我的build.gradle时,它显示我没有正确拼写kotlin,并且在插件上给了我错误,但我正在从kotlins网站复制和粘贴。

我的身材,格雷德尔看起来像这样

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'

}
sourceSets {
    main.java.srcDirs = []
    main.kotlin.srcDirs = ['src/main/java', 'src/main/kotlin']
    main.resources.srcDirs = ['src/main/resources']
}
而不是开始尝试在一个更大的项目上实现这一点。我试图通过创建一个新的gradle项目来实现这一点。我创建了一个测试java类,其中包含打印hello world的方法。然后我创建了一个TestKotlin类,它创建了java类的一个新对象,并从java类调用该方法来打印hello world

这解决了我上面的问题,现在我可以从kotlin调用java类,从java调用kotlin,但现在运行时会出现错误


您应该像这样覆盖源集

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'

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

我有一个类似的问题,我的java代码与kotlin代码在同一个源目录中

我的解决方案是在
build.gradle.kts
中添加此配置:

configure<SourceSetContainer> {
    named("main") {
        java.srcDir("src/main/kotlin")
    }
}
配置{
命名(“主要”){
srcDir(“src/main/kotlin”)
}
}

您是在使用命令行gradle构建项目时遇到此错误,还是仅在Eclipse中看到此错误?据我所知,这只是Eclipse。我对使用IntelliJ没有问题,但我正试图让这个项目与eclipse和IntelliJ一起工作。您是如何构建您的项目的?我尝试在hello world中构建混合java kotlin,但没有得到任何错误。我将项目作为“gradle”导入eclipse,然后将Kotlin nature添加到项目中,并使用“gradle任务”构建它。以防万一,第一个屏幕截图上没有相应的导入声明,请尝试添加它并重新构建项目。我正在做同样的事情,但我没有使用任务来构建gradle项目。我可以手动导入该类,但是如果我将鼠标悬停在该类上,IDE应该会自动为我查找这些类。您使用的是什么Eclipse版本?我使用的是Neon。当我尝试在hello world中导入混合java kotlin时,我遇到了这个问题