Ab heute, wenn ich meinen Kotlin Android App zu bauen versuchen, ich bin mit dem folgenden Fehler in meinem Gradle bauen erfüllt:Kotlin - Intermittent „schlechte Klassendatei“ Fehler
Error:cannot access Baz
bad class file: /Users/me/projects/site/android/app/build/tmp/kapt/debug/classFileStubs/com/company/foo/Bar$Baz.class
bad RuntimeInvisibleParameterAnnotations attribute: Baz(FragmentManager)
Please remove or make sure it appears in the correct subdirectory of the classpath.
Es verweist auf einen inneres Klasse Baz, die android.support.v4.app.FragmentStatePagerAdapter erweitert. Ich bin in der Lage, den Fehler vorübergehend zu umgehen, indem ich die Klasse und alle Verweise darauf in der äußeren Klasse auszeichne und neu aufbaue. Der Fehler verschwindet, aber offensichtlich existiert die Klasse nicht mehr, also brechen andere Dinge zur Laufzeit ab. Dann, wenn ich es ausstehe und baue, wird es für ein paar Builds funktionieren. Dann kommt der Fehler zurück. Spülen und wiederholen. Ich denke, das Schließen des Genymotion-Emulators kann es auslösen.
Hat sonst noch jemand dazu gegriffen oder irgendwelche Ideen?
Hier ist der Code säumige ist:
class Bar : Fragment() {
@Inject
lateinit var api:ApiRequester
var data : ArrayList<Data> = ArrayList()
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
//[...] view creation code
//[...] data population code
viewPager.adapter = Baz(childFragmentManager)
//[...] more view creation code
}
inner class Baz(fm:FragmentManager) : FragmentStatePagerAdapter(fm) {
override fun getCount(): Int {
return data.count()
}
override fun getItem(position: Int): Fragment? {
var jf = FooFragment()
var bundle = Bundle()
bundle.putParcelable("data", data[position])
jf.arguments = bundle
return jf
}
}
EDIT: Apologies, Baz erstreckt FragmentStatePagerAdapter, nicht Fragment, wie ich anfangs erwähnt. Ich benutze Dagger2, was hier durchaus Wirkung zeigen könnte.
Könnten Sie bitte ein Beispiel veröffentlichen, das Probleme verursacht? Ich vermute, dass dies mit der Annotationsverarbeitung zusammenhängen könnte, sodass zusätzliche Informationen über verwendete Bibliotheken (z. B. ButterKnife oder Dagger) nützlich sein könnten. – miensol
Welche Version von Kotlin verwenden Sie? – yole
Laut Android Studio verwende ich Version: 1.0.0-beta-4584-IJ141-13 –