2016-06-30 7 views
4

タイトルによれば、JavaとKotlinを1つのプロジェクトに混在させようとしています。ここには良い例があります。 mixed-java-kotlin-hello-world。すべてが正常に動作していますが、kotlinはsrc/main/java/somepackage/SomeClass.javaにあるJavaクラスを見つけることができません。GradleプロジェクトでJavaとKotlinを混在させると、KotlinはJavaクラスを見つけることができません

この原因は何ですか?

これはエラーです。 enter image description here

私はbuild.gradleを編集しようとすると、それは私が正しくkotlinスペルと私のプラグインのエラーを与えるが、私はコピーしてkotlinsのウェブサイトから貼り付けていないよ示します。 enter image description here

私のbuild.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' 

} 

代わりの大規模プロジェクトで、この作業をしようとしてオフに開始するように見えます。私は新しいグラデルプロジェクトを作成してこの作業をしようとしました。私はhello worldを印刷するメソッドを含むテストJavaクラスを作成しました。それから、Javaクラスの新しいオブジェクトを作成するテストkotlinクラスを作成し、Javaクラスのメソッドを呼び出してhello worldを出力します。

これは私が上記の問題を解決したので、kotlinとkotlinからjavaクラスを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をオーバーライドする必要があり、コマンドラインのGradleでプロジェクトをビルドするときにこのエラーが発生しますか、またはあなただけのEclipseでそれを見ていますか? – Ilya

+0

私が知る限り、それは日食だけです。私はIntelliJを使用してこれで問題はありませんが、私はこのプロジェクトがEclipseとIntelliJで動作するようにしようとしています。 –

+0

プロジェクトをどのように構築しましたか? 私はmixed-java-kotlin-hello-worldをビルドしようとしましたが、何のエラーもありませんでした。私は 'grale'としてプロジェクトをインポートしてEclipseに変換し、次にKotlinの性質をプロジェクトに追加し、 'Gradle tasks'を使用して構築しました。 最初のスクリーンショットに対応するインポート宣言がない場合は、それを追加してプロジェクトを再構築してみてください。 –

答えて

2

あなたはこの

sourceSets { 
    main.java.srcDirs = [] 
    main.kotlin.srcDirs = ['src/main/java', 'src/main/kotlin'] 
    main.resources.srcDirs = ['src/main/resources'] 
} 
関連する問題