Tôi đã bao gồm tệp jar trong dự án Android của mình như được giải thích trong How can I use external JARs in an Android project?. Với cả hai phương pháp được mô tả bởi MannyNS và Vinayak B. trong bài này tôi nhận được lỗi "Không thể tìm thấy lớp 'test.libraryCalc.Calc" là lớp được cung cấp bởi thư viện. Các mã sau minh họa các vấn đề:Android, không tìm thấy lớp học từ tệp jar đã nhập
Ví dụ lớp cung cấp thông qua thư viện: Calc.java
package test.libraryCalc;
public class Calc {
public int add(int a, int b){
return a + b;
}
}
LibraryTestActivity.java
package test.library;
import test.libraryCalc.Calc;
import android.app.Activity;
import android.os.Bundle;
public class LibraryTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Calc calc = new Calc();
int c = calc.add(3, 4);
}
}
tôi xuất khẩu các tập tin jar chứa Calc.java để LibraryTest \ libs \ calc.jar
và thêm một tham chiếu đến nó bằng cách sử dụng "Add lọ ..." nút trong Java Build Path của LibraryTest
Thư viện xuất hiện trong các thư viện tham chiếu trong LibraryTest
LibraryTest không có vấn đề về xây dựng nhưng khi chạy nó trên trình mô phỏng, những điều sau đây được hiển thị trong LogCat:
12-27 14:01:33.965: E/dalvikvm(747): Could not find class 'test.libraryCalc.Calc', referenced from method test.library.LibraryTestActivity.onCreate
12-27 14:01:33.965: W/dalvikvm(747): VFY: unable to resolve new-instance 13 (Ltest/libraryCalc/Calc;) in Ltest/library/LibraryTestActivity;
12-27 14:01:33.995: D/dalvikvm(747): VFY: replacing opcode 0x22 at 0x0008
12-27 14:01:33.995: D/dalvikvm(747): VFY: dead code 0x000a-0013 in Ltest/library/LibraryTestActivity;.onCreate (Landroid/os/Bundle;)V
12-27 14:01:34.065: D/AndroidRuntime(747): Shutting down VM
12-27 14:01:34.065: W/dalvikvm(747): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
12-27 14:01:34.075: E/AndroidRuntime(747): FATAL EXCEPTION: main
12-27 14:01:34.075: E/AndroidRuntime(747): java.lang.NoClassDefFoundError: test.libraryCalc.Calc
12-27 14:01:34.075: E/AndroidRuntime(747): at test.library.LibraryTestActivity.onCreate(LibraryTestActivity.java:14)
12-27 14:01:34.075: E/AndroidRuntime(747): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-27 14:01:34.075: E/AndroidRuntime(747): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
12-27 14:01:34.075: E/AndroidRuntime(747): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
12-27 14:01:34.075: E/AndroidRuntime(747): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
12-27 14:01:34.075: E/AndroidRuntime(747): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
12-27 14:01:34.075: E/AndroidRuntime(747): at android.os.Handler.dispatchMessage(Handler.java:99)
12-27 14:01:34.075: E/AndroidRuntime(747): at android.os.Looper.loop(Looper.java:123)
12-27 14:01:34.075: E/AndroidRuntime(747): at android.app.ActivityThread.main(ActivityThread.java:4627)
12-27 14:01:34.075: E/AndroidRuntime(747): at java.lang.reflect.Method.invokeNative(Native Method)
12-27 14:01:34.075: E/AndroidRuntime(747): at java.lang.reflect.Method.invoke(Method.java:521)
12-27 14:01:34.075: E/AndroidRuntime(747): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-27 14:01:34.075: E/AndroidRuntime(747): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-27 14:01:34.075: E/AndroidRuntime(747): at dalvik.system.NativeStart.main(Native Method)
12-27 14:06:34.170: I/Process(747): Sending signal. PID: 747 SIG: 9
Cần phải làm gì để làm việc này ? Cảm ơn tất cả các đề xuất.
Nếu bạn cho rằng ảnh hữu ích và bạn chưa có quyền, vui lòng tải chúng lên hình ảnh bên ngoài đơn giản và thêm liên kết thay thế. Thông thường, người dùng có quyền chỉnh sửa và ảnh sẽ dừng lại và nhúng chúng nếu anh ta cho rằng điều này là phù hợp. Chỉnh sửa: Ok upvoted hơn 10. Bây giờ bạn có thể gửi chúng trên của riêng bạn. :) –
Ngoài ra hãy chắc chắn rằng bình bạn đang thêm được biên dịch bằng Java 6 hoặc cũ hơn. Android KHÔNG hỗ trợ Java 7 kể từ khi đăng bài này (tháng 7 năm 2012) –