2016-01-19 12 views
19

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.

+2

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

+2

Welche Version von Kotlin verwenden Sie? – yole

+0

Laut Android Studio verwende ich Version: 1.0.0-beta-4584-IJ141-13 –

Antwort

2

Ich habe zwei Möglichkeiten, Ihnen zu helfen.

1- versuchen Sie, das Programm zu aktualisieren. Verwenden Sie THIS

2- Verwenden Sie Java 7, ändern Sie Ihren Pfad. Export JAVA_HOME = /usr/libexec/java_home -v 1.7

Verwandte Themen