Kotlin - 间歇性的"坏类文件"错误

Joh*_* D. 19 android gradle kotlin

从今天开始,当我尝试构建我的Kotlin Android应用程序时,我在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.
Run Code Online (Sandbox Code Playgroud)

它指向一个内部类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
        }
    }
Run Code Online (Sandbox Code Playgroud)

编辑:道歉,Baz扩展FragmentStatePagerAdapter,而不像我最初所说的片段.我正在使用Dagger2,这可能完全有效.

jos*_*jan 2

我有两个选择可以帮助你。

1-尝试升级proguard。用这个

2- 使用 Java 7,更改路径。导出JAVA_HOME=/usr/libexec/java_home -v 1.7