2017-02-13 13 views
2

Поскольку я не смог решить проблему, у меня есть kotlin, я решил вернуться к groovy, чтобы реализовать плагин.groovy не может решить классы kotlin

Однако я столкнулся с проблемой. У меня такая структура проекта.

enter image description here

Чтобы не переписывать все классы я решил повторно использовать классы, реализованные в kotlin.

Однако мои классы FileProcessingCoreGroovy & DownloadCoreGroovy не в состоянии разрешить класс ProcessStream и UnpackStream.

Я думал, что они должны иметь возможность свободно использовать друг друга, но я думаю, что я был неправ. В чем проблема?

Классы сама ввозимые просто отлично от IDE (не отмечен красным цветом и так далее)

enter image description here

Выход консоли выглядит следующим образом (я использую другой класс, где я импортировать PluginUtils из kotlin классов)

:clean                   
:compileKotlin (...multiple deprecated messages...) 
:compileJava UP-TO-DATE  
:compileGroovy     
startup failed:     
D:\groovy_apps\MISC\gradle-app-environment-plugin\src\main\groovy\com.lapots.gradle.plugins.appenv\ApplicationEnvironmentGroovyPlugin.g 
roovy: 4: unable to resolve class com.lapots.gradle.plugins.appenv.core.PluginUtils 
@ line 4, column 1. 
    import com.lapots.gradle.plugins.appenv.core.PluginUtils 
^       
+0

Вы компилируете файлы kotlin перед groovy-файлами? – cfrick

+0

Hm. Я использую порядок по умолчанию и в соответствии с ним компилируется в порядке 'compileKotlin',' compileJava', 'compileGroovy'. – lapots

+0

Вы получаете эту ошибку при компиляции или во время выполнения? – cfrick

ответ

0

У меня была та же проблема. Это как-то связано с сопутствующими объектами Котлина. Я переместил статические функции из сопутствующего объекта на уровень пакета и начал работать.

3

Похоже, это не так просто.

См https://discuss.gradle.org/t/kotlin-groovy-and-java-compilation/14903/2

Использование предложений оттуда, я добавил

compileGroovy { 
    dependsOn tasks.getByPath('compileKotlin') 
    classpath += files(compileKotlin.destinationDir) 
} 

И это сработало.

+0

Вы также можете продублировать это для компиляции теста. Просто замените compileGroovy на compileTestGroovy и скомпилируйте Kotlin с помощью compileTestKotlin –