2009-06-12 28 views
127

Tôi có một dự án hiện có sử dụng @Override trên các phương thức ghi đè giao diện , chứ không phải là các phương thức siêu lớp. Tôi không thể thay đổi mã này, nhưng tôi muốn Eclpse ngừng phàn nàn về chú thích, vì tôi vẫn có thể xây dựng với Maven.Tại sao Eclipse phàn nàn về @Override trên các phương thức giao diện?

Tôi sẽ làm cách nào để vô hiệu hóa lỗi này?

Lưu ý: Do yêu cầu của dự án, tôi cần biên dịch cho Java 1.5.

+0

Nhưng có vẻ như nguồn được nhắm mục tiêu đến Java 6? – akarnokd

+0

Thật vậy. Java 5 là một yêu cầu muộn cho hỗ trợ mac. –

Trả lời

256

Sử dụng chú thích @Override trên các phương pháp triển khai thực hiện những chú thích bởi giao diện chỉ hợp lệ từ Java 6 trở đi. Đó là lỗi trong Java 5.

Đảm bảo rằng các dự án IDE của bạn được thiết lập để sử dụng Java 6 JRE và rằng "khả năng tương thích nguồn" được đặt thành 1.6 hoặc cao hơn. Mở hộp thoại Window> Preferences và duyệt đến Java> Compiler. Ở đó bạn có thể đặt "Mức tuân thủ trình biên dịch" thành 1.6.

Hãy nhớ rằng Eclipse có thể ghi đè các cài đặt chung này cho một dự án cụ thể, vì vậy hãy kiểm tra các cài đặt đó.


Cập nhật:

Các lỗi dưới Java 5 không chỉ là với Eclipse; sử dụng javac trực tiếp từ dòng lệnh sẽ cung cấp cho bạn cùng một lỗi. Nó không phải là mã nguồn Java 5 hợp lệ.

Tuy nhiên, bạn có thể chỉ định tùy chọn -target 1.5 cho JDK 6's javac, sẽ tạo tệp lớp phiên bản Java 5 từ mã nguồn Java 6.

+0

Không, nó sẽ không. Nó sẽ tạo ra một thông báo lỗi "javac: source release 1.6 yêu cầu bản phát hành mục tiêu 1.6". –

+9

Không, nó sẽ không. Nó sẽ tạo ra một tệp lớp được biên dịch. Nó chỉ đưa ra lỗi đó nếu bạn chỉ định tùy chọn -source 1.6, không cần thiết để thực hiện công việc này. – erickson

+0

Bạn biết đấy, kể từ khi tôi xây dựng bằng tay anyway, tôi chỉ có thể rời khỏi mức nguồn ở 1,6. Tôi không thể nhận được bất kỳ loại cấu hình hỗn hợp làm việc, và điều này có vẻ đơn giản nhất. –

6

Bạn có thể thay đổi cài đặt trình biên dịch để chấp nhận cú pháp Java 6 nhưng tạo đầu ra Java 5 (như tôi nhớ). Và đặt "Khả năng tương thích của các tệp lớp học được tạo ra" một chút thấp hơn nếu cần theo thời gian chạy của bạn. Cập nhật: Tôi đã kiểm tra Eclipse, nhưng nó phàn nàn nếu tôi đặt khả năng tương thích nguồn với 1.6 và khả năng tương thích với lớp thành 1.5. Nếu 1.6 không được phép, tôi thường tự nhận xét các chú thích @Override vi phạm trong nguồn (điều này không giúp ích cho trường hợp của bạn).

Update2: Nếu bạn chỉ làm thủ công xây dựng, bạn có thể viết một chương trình nhỏ mà các bản sao dự án ban đầu thành một hình mới, dải chú thích @Override từ các nguồn java và bạn chỉ cần nhấn dự án sạch trong Eclipse.

+0

Bạn có thể cung cấp bất kỳ chi tiết cụ thể nào không? –

+0

Nó nằm trên cùng một trang như được tuyên bố bởi erickson. – akarnokd

+0

Dự án rộng vài GB. Một "bản sao" đơn giản thậm chí không thực tế. :/ –

1

Bạn cũng có thể thử Retroweaver để tạo phiên bản Java5 từ các lớp Java6.

34

dự án-> Properties-> java compiler->

Enable cài đặt cụ thể dự án -Vâng Compiler tuân thủ - 1,6 file lớp tạo và khả năng tương thích nguồn - 1,5

+0

Cảm ơn - đã không nhận ra từng dự án cũng có cài đặt riêng của nó – whostolemyhat

+2

trong trường hợp của tôi, tôi cần tắt tùy chọn này. –

10

Kiểm tra cũng nếu dự án có khía cạnh. Phiên bản java có thể được overriden ở đó.

+0

Điểm! Bạn đã đúng, khía cạnh dự án của tôi đã ghi đè các cài đặt tuân thủ toàn cầu. Cảm ơn! – Garet

1

Sử dụng Eclipse để tìm kiếm và thay thế (xóa) tất cả các phiên bản của "@Override". Sau đó, thêm lại các ghi đè không giao diện bằng cách sử dụng "Clean Up".

bước:

  1. Chọn dự án hay các thư mục chứa các file nguồn của bạn.
  2. Đi tới "Tìm kiếm> Tìm kiếm ..." (Ctrl-H) để hiển thị hộp thoại Tìm kiếm.
  3. Chuyển đến tab "Tìm kiếm tệp".
  4. Nhập "@Override" trong "Chứa văn bản" và "* .java" trong "Mẫu tên tệp". Nhấp vào "Thay thế ...", sau đó "OK" để xóa tất cả các phiên bản của "@Override".
  5. Đi tới "Cửa sổ> Tùy chọn> Java> Kiểu mã> Dọn sạch" và tạo cấu hình mới.
  6. Chỉnh sửa tiểu sử và bỏ chọn mọi thứ ngoại trừ "Thiếu mã> Thêm chú thích bị thiếu> @Override". Đảm bảo rằng "Triển khai phương thức giao diện" không được chọn.
  7. Chọn dự án hoặc thư mục chứa tệp nguồn của bạn.
  8. Chọn "Nguồn> Dọn dẹp ..." (Alt + Shift + s, rồi u), rồi "Kết thúc" để thêm lại các ghi đè không giao diện.
6

Cài đặt cụ thể của dự án có thể được bật. Chọn dự án của bạn Project > Properties > Java Compiler, uncheck các Enable project specific settings hoặc thay đổi Jdk 1.6 trở lên mà không quên JRE tương ứng.
Khi nó không hoạt động, hãy xóa dự án của bạn khỏi nhật thực, hãy xóa .settings folders, .project, .classpath tệp. clean and build the project, import it back into eclipse and then reset your Java compiler. Clean and build your project và nhật thực. Nó làm việc cho tôi

0

tôi hiểu vấn đề của bạn, thay đổi jdk của bạn từ jdk của bạn để greaterthan 1,5

0

Bằng cách cấu hình rằng các dự án IDE được thiết lập để sử dụng một JRE Java 6 hoặc cao hơn đôi khi không loại bỏ các lỗi eclipse. Đối với tôi, khởi động lại của IDE Eclipe đã giúp.

0

Ngay cả sau khi thay đổi cài đặt tuân thủ trình biên dịch thành 1.6 hoặc 1.7 từ tab cửa sổ, sau đó thích, sau đó java, sau đó biên dịch và cài đặt tuân thủ trình biên dịch , tôi vẫn gặp sự cố này. Ý tưởng là chúng tôi cần phải đi thư mục dự án, nhấp chuột phải, Java và thiết lập trình biên dịch tuân thủ 1.6 hoặc higer. Điều này làm việc cho tôi.

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