android - the - kotlin-stdlib-jre7 is deprecated. please use kotlin-stdlib-jdk7 instead
Kotlin-Error intermitente de "archivo de clase incorrecto" (1)
A partir de hoy, cuando intento construir mi aplicación Kotlin para Android, me encuentro con el siguiente error en mi compilación de Gradle:
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.
Está apuntando a una clase interna Baz que extiende android.support.v4.app.FragmentStatePagerAdapter. Soy capaz de sortear temporalmente el error comentando la clase, y cualquier referencia a él en la clase externa, y la reconstrucción. El error desaparece, pero obviamente la clase ya no existe, por lo que otras cosas se rompen en el tiempo de ejecución. Entonces, si lo descomento y construyo, funcionará para algunas compilaciones. Entonces vuelve el error. Enjuague y repita. Creo que cerrar el emulador Genymotion puede activarlo.
¿Alguien más se topa con esto, o tiene alguna idea?
Aquí está el código ofensivo:
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: Disculpas, Baz extiende FragmentStatePagerAdapter, no Fragmento como lo dije inicialmente. Estoy usando Dagger2, que podría tener un efecto total aquí.
Tengo dos opciones para ayudarte.
1- Intenta actualizar el programa. Use THIS
2- Usa Java 7, cambia tu camino. exportar JAVA_HOME = /usr/libexec/java_home -v 1.7