2013-07-31 43 views
13

Nguyên nhân có thể xảy ra đối với ABstractMethodError là gì?Tại sao tôi gặp lỗi java.lang.AbstractMethodError?

Exception in thread "hồ bơi-1-thread-1" java.lang.AbstractMethodError:

org.apache.thrift.ProcessFunction.isOneway()Z 
    at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:51) 
    at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) 
    at com.gemfire.gemstone.thrift.hbase.ThreadPoolServer$ClientConnnection.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
+0

Hãy cho chúng tôi biết một số ngữ cảnh, bạn đang cố gắng làm gì? Có thể là một số vấn đề về phiên bản! Phương thức mà bạn gọi hoặc một số mã gọi khác được chuyển đổi thành một phương thức trừu tượng ngay bây giờ. – NINCOMPOOP

+0

Tôi đã thử phiên bản tiết kiệm cơ sở. Tôi xây dựng trình biên dịch tiết kiệm và tạo ra các tập tin tiết kiệm. và sử dụng mvn xây dựng dự án của tôi cũng đang tải xuống phiên bản 0.9.0 của các lọ tiết kiệm apache. điều này cũng giống như tôi đang sử dụng. – Avinash

Trả lời

6

Câu trả lời đơn giản là thế này: một số mã đang cố gắng gọi một phương thức được tuyên bố abstract. Các phương thức trừu tượng không có phần thân và không thể được thực hiện. Vì bạn đã cung cấp rất ít thông tin tôi có thể không thực sự xây dựng hơn về cách thức này có thể xảy ra kể từ khi trình biên dịch thường bắt vấn đề này - as described here, this means the class must have changed at runtime.

+0

Có, phương pháp được định nghĩa là trừu tượng, nhưng tôi truy tìm qua nhật thực và tôi thấy các phương thức được thực hiện trong các lớp con – Avinash

+0

Chắc chắn, nhưng điều đó có nghĩa là bạn phải gọi một lớp con cụ thể. Bạn vẫn không thể gọi chính phương thức đó. – jazzbassrob

+0

Tôi đã kiểm tra lại, mã tiết kiệm của Apache được gọi là thực hiện đối tượng con cụ thể – Avinash

1

Từ documnentation của AbstractMethodError

Thrown when an application tries to call an abstract method. Normally, this error is caught by the compiler; this error can only occur at run time if the definition of some class has incompatibly changed since the currently executing method was last compiled.

27

Nó thường có nghĩa là bạn đang sử dụng phiên bản cũ của triển khai giao diện thiếu phương thức giao diện mới. Ví dụ, giao diện java.sql.Connection có một phương thức getSchema mới trong 1.7. Nếu bạn có 1,6 trình điều khiển JDBC và gọi Connection.getSchema bạn sẽ nhận được AbstractMethodError.

+2

Rất vui, bạn đã có tôi ở "phiên bản cũ của giao diện" – mtyson

0

Nếu bạn gặp lỗi này trên các phương pháp đã triển khai, hãy đảm bảo bạn đã thêm chính xác các phụ thuộc của mình như được đề cập trong this thread.

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