Tôi bị kẹt trong khoảng 2 giờ về một vấn đề mà tôi nghĩ rằng nó rất dễ giải quyết. Tôi đang tạo bộ chọn ngày giờ tùy chỉnh cho nền tảng Android và, do sự chậm chạp của các lớp java.util.Calendar và java.util.Date chuẩn, tôi quyết định sử dụng thư viện JODA.Android java.lang.NoClassDefFoundError bằng cách sử dụng thư viện JODA
Thật không may là tôi không có kinh nghiệm với các tham chiếu 'JAR' (tha thứ cho tôi ... tôi đến từ COM và .NET assembly thế giới =) ...), nhưng tôi tìm hiểu một số mẹo trên internet nhưng rõ ràng là là sai ... Đây là những bước tôi lấy để sử dụng thư viện trong dự án của tôi:
- Tải thư viện Joda mới nhất 2.1
- Tạo thư mục 'lib' vào thư mục dự án của tôi
- Add ' joda-time-2.1.jar 'vào thư mục' lib '.
- Thêm thư viện 'joda-time-2.1.jar' vào đường dẫn xây dựng.
- Thêm 'joda-time-2.1-javadoc.jar' và 'joda-time-2.1-sources.jar' vào thư mục 'lib'
- Đặt thư viện ở trên là 'tệp đính kèm nguồn java' và 'vị trí javadoc 'cho thư viện tham chiếu joda-time-2.1.
- Sử dụng thư viện mới vào mã của tôi (ehm ehm 'intelli-sense' và trình biên dịch không ném bất kỳ lỗi hoặc cảnh báo nào)
- Bắt đầu gỡ lỗi trên thiết bị thực hoặc ảo.
Khi nói đến dòng sau (người đầu tiên sử dụng Joda BTW), debug dừng:
DateTime newDate = new DateTime(2012, 5, 3, 12, 0, 0);
Và trả về stack trace sau:
05-03 19:09:14.349: E/AndroidRuntime(4071): java.lang.NoClassDefFoundError: org.joda.time.DateTime
05-03 19:09:14.349: E/AndroidRuntime(4071): at it.paganel.droidMessageExport.Control.TimePickerControl.SetTimePart(TimePickerControl.java:83)
05-03 19:09:14.349: E/AndroidRuntime(4071): at it.paganel.droidMessageExport.Control.TimePickerControl.onClick(TimePickerControl.java:116)
05-03 19:09:14.349: E/AndroidRuntime(4071): at android.view.View.performClick(View.java:2454)
05-03 19:09:14.349: E/AndroidRuntime(4071): at android.view.View$PerformClick.run(View.java:9030)
05-03 19:09:14.349: E/AndroidRuntime(4071): at android.os.Handler.handleCallback(Handler.java:587)
05-03 19:09:14.349: E/AndroidRuntime(4071): at android.os.Handler.dispatchMessage(Handler.java:92)
05-03 19:09:14.349: E/AndroidRuntime(4071): at android.os.Looper.loop(Looper.java:123)
05-03 19:09:14.349: E/AndroidRuntime(4071): at android.app.ActivityThread.main(ActivityThread.java:4641)
05-03 19:09:14.349: E/AndroidRuntime(4071): at java.lang.reflect.Method.invokeNative(Native Method)
05-03 19:09:14.349: E/AndroidRuntime(4071): at java.lang.reflect.Method.invoke(Method.java:521)
05-03 19:09:14.349: E/AndroidRuntime(4071): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:870)
05-03 19:09:14.349: E/AndroidRuntime(4071): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
05-03 19:09:14.349: E/AndroidRuntime(4071): at dalvik.system.NativeStart.main(Native Method)
05-03 19:09:14.349: E/AndroidRuntime(4071): Caused by: java.lang.ClassNotFoundException: org.joda.time.DateTime in loader dalvik.system.PathClassLoader[/data/app/it.paganel.droidMessageExport-2.apk]
05-03 19:09:14.349: E/AndroidRuntime(4071): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
05-03 19:09:14.349: E/AndroidRuntime(4071): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
05-03 19:09:14.349: E/AndroidRuntime(4071): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
05-03 19:09:14.349: E/AndroidRuntime(4071): ... 13 more
Ai đó có thể giúp tôi? Cảm ơn bạn trước!
Tuyên bố nhập khẩu mà bạn sử dụng cho DateTime là gì? – Sam
Tôi đã gặp vấn đề tương tự khi mở dự án của mình trên một máy tính khác, Eclipse biên dịch ngược lại với thư viện ok nhưng nó bị treo tại cuộc gọi đầu tiên tới hàm tạo DateTime của thư viện JodaTime. – Luke