異なるソースセットで Kotlin パッケージ関数とパッケージ プロパティを使用することは可能ですか? そうしようとしたら、NoSuchMethodError
投げてしまいました。
例
Kotlinコードと2つのソースセットを含むGradleプロジェクトがありmain
、test
. ではmain
、ファイルの 1 つに次のコードがあります。
package ru.ifmo.ctddev.igushkin.dkvs
...
public val payloadSplitter: String = " ### "
次のコードでtest
アクセスしようとしています:payloadSplitter
package ru.ifmo.ctddev.igushkin.dkvs
...
public class MessageTests {
...
test fun testParsing() {
...
checkParseAndToString("p1b 345 ${payloadSplitter} set a b c")
}
...
}
そして、正確にpayloadSplitter
アクセスされる最初の行で、実行時に取得します
java.lang.NoSuchMethodError: ru.ifmo.ctddev.igushkin.dkvs.DkvsPackage.getPayloadSplitter()Ljava/lang/String;
他のグローバル変数と関数もtest
同じエラーでアクセスできません。
UPD Kotlin チームがこの問題について説明し、こちらで修正を発表しました。