2010-02-27 46 views
22

Tôi có hai dự án Android, ProjA yêu cầu ProjB (trong Thuộc tính Eclipse> Đường dẫn xây dựng Java> Dự án> Thêm> ProjB). Mọi thứ đều biên dịch ok trong Eclipse, nhưng khi tôi chạy ProjA tôi gặp lỗi:Không thể tìm thấy phương pháp XXX, được tham chiếu từ phương pháp YYY

Could not find method XXX, referenced from method YYY.

Nơi XXX - là phương thức từ ProjB.

Làm cách nào để khắc phục cài đặt?

+0

Chỉ cần chạy vào tình huống tương tự này - bao gồm lỗi classnotfound khi chạy khi ứng dụng khởi động. Giải pháp: thêm thư mục nguồn dự án thư viện vào đường dẫn xây dựng! –

+0

Tôi có cùng một vấn đề! Và tôi đã thử mọi thứ: thêm một tham chiếu dự án (như Commonsware gợi ý), tạo ra một JAR-fil và nhập nó vào ProjA - không có gì hoạt động! – Ted

+1

Bạn có hai tùy chọn. 1) Tạo ProjB cái gọi là "Thư viện Android" (xem câu trả lời được chấp nhận) 2) Nếu ProjB không có tài nguyên (bố cục, hình vẽ, vv) thì bạn có thể tạo dự án Java thông thường (không phải android) và thêm android.jar như jar bên ngoài trên thư viện tab trong nhật thực, và loại bỏ JRE từ cùng một tab ... Các android.jar có thể được tìm thấy tại đường dẫn như thế này: C: \ android-sdk-windows \ nền tảng \ android-3 \ android.jar – alex2k8

Trả lời

1

Kết hợp hai dự án thành một.

Hoặc, có ProjB tạo tệp JAR mà ProjA bao gồm.

Hoặc, biến ProjB thành Dịch vụ từ xa, với phương thức được đề cập được hiển thị qua AIDL và có ProjA liên kết với dịch vụ đó để sử dụng phương pháp.

+0

Như đã lưu ý ở trên, không có đề xuất nào trong số những đề xuất này hoạt động. Tôi tiếp tục nhận được lỗi ở trên của lỗi NoClassDefFound. Nhưng trong thời gian biên dịch tất cả mọi thứ có vẻ tốt ... Tôi đã làm sạch, khởi động lại vv ... không có gì hoạt động. – Ted

1

Bạn có thể muốn xem thiết kế của mình, nếu bạn không muốn đi với câu trả lời của CommonsWare.

Ví dụ: bạn có thể gọi dự án thứ hai từ dự án đầu tiên bằng cách sử dụng Intents chẳng hạn.

Nếu có mã chung cho hai dự án thì bạn có thể kéo nó vào một dự án mới nơi bạn có thể đưa tệp trực tiếp vào cả hai dự án, nhưng nếu hai tệp này hoạt động cùng nhau thì có nhiều cách khác nhau trong Android để cho phép Các hoạt động gọi cho nhau hoặc để truyền thông tin và bạn có thể muốn xem các hoạt động đó.

34

Tôi có vấn đề tương tự khi sử dụng bình bên ngoài (trong trường hợp của tôi là openCSV). Lý do tôi gặp sự cố là do thay đổi trong ADT 17 (hoặc cao hơn). Những gì tôi cần làm để giải quyết vấn đề là

  1. Trong Eclipse chuyển đến Thuộc tính -> Đường dẫn xây dựng Java -> Đặt hàng và xuất.
  2. Đánh dấu lọ của tôi.
  3. Di chuyển lọ lên đầu danh sách.

Giải pháp được tìm thấy in the following page tham chiếu đến một bài viết rất hay.

+0

Điều này làm việc cho tôi, cảm ơn – celoftis

+1

Chúc mừng, ban đầu tôi nghĩ rằng nó không liên quan gì đến dự án bên ngoài của tôi. Lỗi đã nói lớp X không thể được tìm thấy bằng phương pháp Y tuy nhiên phương pháp Y đã được tìm thấy trong lớp X! Tôi đã suy nghĩ làm thế nào có thể phương pháp X.Y() không biết về lớp nó đến từ đâu? Sau đó, tôi nhận ra rằng phương thức X.Y() đã không tương tác với một số cấu trúc dữ liệu mà xuống dòng đến từ một dự án bên ngoài. Vì vậy, tôi đã đi đến đặt hàng và xuất khẩu và di chuyển các thư viện tư nhân Android lên hàng đầu và thì đấy! Điểm là mặc dù cho bất kỳ người xem, nếu bạn không nghĩ rằng một dự án khác là có liên quan .. bạn có chắc chắn? – mgibson

+1

+1 Tôi xin thề mã hóa các ứng dụng Android sẽ là không thể nếu không có SO. – Sydwell

0

Tôi đã có kinh nghiệm vấn đề này với Android Gradle mới xây dựng hệ thống, tôi đã sửa nó bằng cách chạy gradle clean rồi xây dựng và cài đặt lại. Xây dựng hệ thống là những con thú phức tạp và Google vẫn chưa giải quyết vấn đề phụ thuộc hoàn hảo.

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