2016-01-19 21 views
19

A partire da oggi, quando si tenta di costruire il mio Kotlin Android, io sono incontrato con il seguente errore nel mio Gradle costruire:Kotlin - intermittente di errore "file di classe cattivo"

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. 

Si sta puntando ad un interno classe Baz che estende android.support.v4.app.FragmentStatePagerAdapter. Sono in grado di aggirare temporaneamente l'errore commentando la classe e qualsiasi riferimento ad essa nella classe esterna e la ricostruzione. L'errore scompare, ma ovviamente la classe non esiste più, quindi altre cose si interrompono in fase di esecuzione. Quindi, se lo decommento e lo compilo, funzionerà per alcune build. Quindi l'errore ritorna. Risciacqua e ripeti. Penso che la chiusura dell'emulatore Genymotion possa farla scattare.

Qualcun altro si imbatte in questo o ha qualche idea?

ecco il codice incriminato:

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: Scusate, Baz si estende FragmentStatePagerAdapter, non Frammento come ho inizialmente dichiarato. Sto usando Dagger2, che potrebbe avere un effetto qui.

+2

Potresti pubblicare un campione che causa problemi? Ho il sospetto che potrebbe essere correlato all'elaborazione delle annotazioni, quindi qualsiasi informazione aggiuntiva sulle librerie utilizzate (ad esempio ButterKnife o Dagger) potrebbe tornare utile – miensol

+2

Quale versione di Kotlin stai usando? – yole

+0

Secondo Android Studio, sto usando Versione: 1.0.0-beta-4584-IJ141-13 –

risposta

2

Ho due opzioni per aiutarti.

1- provare ad aggiornare proguard. Utilizzare THIS

2- Utilizzare Java 7, modificare il percorso. export JAVA_HOME = /usr/libexec/java_home -v 1.7

Problemi correlati