Подтвердить что ты не робот

Kotlin - Прерывистая ошибка "плохого файла класса"

Начиная с сегодняшнего дня, когда я пытаюсь создать свое приложение для Android Kotlin, в моей 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.

Он указывает на внутренний класс Baz, который расширяет android.support.v4.app.FragmentStatePagerAdapter. Я могу временно обойти ошибку, комментируя класс и любые ссылки на него во внешнем классе и перестраивая. Ошибка уходит, но, очевидно, класс больше не существует, и другие вещи ломаются во время выполнения. Затем, если я раскомментирую его и построю, он будет работать для нескольких сборок. Затем возвращается ошибка. Промыть и повторить. Я думаю, что закрытие эмулятора Genymotion может вызвать его.

Кто-нибудь еще сталкивается с этим или имеет какие-то идеи?

Вот код нарушения:

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: Извинения, Baz расширяет FragmentStatePagerAdapter, а не фрагмент, как я изначально заявил. Я использую Dagger2, который может полностью иметь эффект здесь.

4b9b3361

Ответ 1

У меня есть два варианта, которые помогут вам.

1- попробуйте обновить proguard. Используйте ЭТО

2- Используйте Java 7, измените свой путь. экспорт JAVA_HOME = /usr/libexec/java_home -v 1.7