2016-01-19 20 views
19

Bắt đầu từ ngày hôm nay, khi tôi cố gắng để xây dựng ứng dụng Kotlin Android của tôi, tôi đã gặp các lỗi sau đây trong Gradle tôi xây dựng:Kotlin - liên tục báo lỗi "tập tin lớp xấu"

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. 

Nó được trỏ đến một nội lớp Baz mở rộng android.support.v4.app.FragmentStatePagerAdapter. Tôi có thể tạm thời tránh được lỗi này bằng cách bình luận ra lớp, và bất kỳ tham chiếu nào đến nó trong lớp bên ngoài, và xây dựng lại. Lỗi này biến mất, nhưng rõ ràng là lớp không còn tồn tại để những thứ khác bị hỏng khi chạy. Sau đó, nếu tôi uncomment nó và xây dựng, nó sẽ làm việc cho một vài xây dựng. Sau đó, lỗi trở lại. Rửa sạch và lặp lại. Tôi nghĩ rằng việc đóng trình giả lập Genymotion có thể kích hoạt nó.

Bất cứ ai khác chạy vào điều này hoặc có bất kỳ ý tưởng nào?

Đây là mã vi phạm:

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: Xin lỗi, Baz kéo dài FragmentStatePagerAdapter, not Fragment như tôi ban đầu được ghi. Tôi đang sử dụng Dagger2, mà hoàn toàn có thể có hiệu lực ở đây.

+2

Bạn có thể đăng một mẫu gây rắc rối không? Tôi nghi ngờ nó có thể liên quan đến việc xử lý chú thích để mọi thông tin bổ sung về các thư viện được sử dụng (ví dụ: ButterKnife hoặc Dagger) có thể hữu ích – miensol

+2

Bạn đang sử dụng phiên bản Kotlin nào? – yole

+0

Theo Android Studio, tôi đang sử dụng Phiên bản: 1.0.0-beta-4584-IJ141-13 –

Trả lời

2

Tôi có hai tùy chọn để trợ giúp bạn.

1- thử nâng cấp proguard. Sử dụng THIS

2- Sử dụng Java 7, thay đổi đường dẫn của bạn. xuất JAVA_HOME = /usr/libexec/java_home -v 1.7

Các vấn đề liên quan