У меня есть набор функций расширения, которые я хотел бы упаковать в jar и включить в проект, но я не могу оценить функции расширения из jar. Я могу получить доступ к функциям без расширения из того же банка.
Например, если я создаю проект в Idea, включающий следующий файл, и создаю флягу.
package mypackagename.swtbuilder
import org.eclipse.swt.SWT
import org.eclipse.swt.widgets.*
fun myFun() {
println("here")
}
fun Composite.tree(treeStyle: Int = SWT.NONE, init: Tree.() -> Unit): Tree {
val treeWidget = Tree(this, treeStyle)
treeWidget.init()
return treeWidget
}
Затем включите jar как зависимость в другой проект, используя что-то вроде этого в файле build.gradle.
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
compile "org.eclipse.swt:org.eclipse.swt.gtk.linux.x86_64:4.5.2"
compile files('/home/john/development/swt-builder/build/libs/swt-builder-1.0-SNAPSHOT.jar')
}
Я могу использовать myFun в новом проекте, но все функции расширения не решены.
import mypackagename.swtbuilder.myFun // this import works
import mypackagename.swtbuilder.tree // this import is "grayed out"
fun main(args: Array<String>) {
val display = Display()
myFun() // this function call works
val myTree = tree { // tree is un-resolved
}
}
Что мне нужно сделать, чтобы сделать функции расширения видимыми?