2009-10-04 4 views
6

Lỗi này rất lạ và tôi không thể hiểu được nhiều. Tôi đã cài đặt EclipseRCP 3.5.1, cập nhật Java SE 1.6 16 và chuyển sang SWT 3.5. Tôi đã tạo một dự án mới, thiết lập các phụ thuộc và cố gắng biên dịch. Khi cố gắng để nhập khẩu, sử dụng như sau:Lỗi trình biên dịch Eclipse 3.5.1: Loại OutputFormat không thể truy cập được do hạn chế đối với thư viện bắt buộc ../rt.jar

import com.sun.org.apache.xml.internal.serialize.OutputFormat; 
import com.sun.org.apache.xml.internal.serialize.XMLSerializer; 

tôi nhận được lỗi:

Access restriction: The type XMLSerializer is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar. 

Tôi đã google nó, đọc một số phản ứng here..and vấn đề là vẫn còn đó. Điều thú vị là nếu tôi sử dụng EclipseRCP trước (Phiên bản: 3.4.2), vấn đề này không bao giờ xảy ra. Phiên bản 3.4.2 sử dụng cùng một phiên bản JRE và tôi vừa thử nghiệm phiên bản SWT. Hoạt động tốt. Tôi đoán vấn đề dựa vào một số plugin của IDE mới. Bất kỳ ý tưởng?

P.S. Tôi đã tìm thấy điều này article. Nhưng tôi không thích hoặc muốn thay đổi mã nếu tôi không phải. Trước tiên, nguồn gốc của vấn đề là gì và giải pháp sẽ theo sau ..

Trả lời

10

Cấu hình mặc định của trình biên dịch Eclipse quá hạn chế. Bạn có thể nới lỏng nó bằng cách mở các tùy chọn cho Java -> Trình biên dịch -> Lỗi/Cảnh báo và trong "Ngừng sử dụng và hạn chế API" thay đổi cài đặt "Tham chiếu bị cấm (quy tắc truy cập)" từ lỗi để cảnh báo hoặc bỏ qua. Tuy nhiên, một câu hỏi đặt ra là nếu bạn thực sự muốn sử dụng các lớp trong gói com.sun.-vì bạn không được đảm bảo rằng chúng sẽ có sẵn trong một máy ảo từ một nhà cung cấp khác hoặc một máy ảo mới hơn từ Sun.

+0

Có, tôi biết về cài đặt nhật thực để khắc phục sự cố, nhưng cài đặt tương tự nằm trong phiên bản RCP cũ hơn và tôi không gặp sự cố. Tôi chưa bao giờ nghe nói rằng trước đây ... vậy, tại sao lại là gói com.sun. thậm chí tồn tại, nếu sử dụng của mình không được khuyến khích ?? – hypercube

+0

Mục đích của việc nhập khẩu là đọc/ghi các tệp XML, vì nó là sự hiểu biết của tôi rằng JDK1.6 có các trình phân tích cú pháp XML được xây dựng. Bạn có gợi ý rằng nó không thể được thực hiện, vì com.sun. * Không nên được sử dụng? – hypercube

+0

Nó được sử dụng trong nội bộ bởi các API công cộng, có thể là JAXB hoặc một cái gì đó. Nếu bạn cần trực tiếp các lớp, thay vào đó bạn nên thêm Apache Xerces-J làm thư viện và sử dụng các lớp org.apache.xml.serialize.OutputFormat và org.apache.xml.serialize.XMLSerializer thay thế. – jarnbjo

1

Chỉ cần lưu ý cho bất kỳ ai gặp vấn đề tương tự và dường như không làm cho cài đặt Eclipse hoạt động (ví dụ: tôi vừa mới): kiểm tra "Tham chiếu bị cấm" không được đặt thành "Lỗi" trong cài đặt cụ thể của dự án.

1

Tôi đang đăng bài lên chuỗi cũ này chỉ để tham khảo cho bất kỳ ai gặp phải vấn đề này trong tương lai.

Tôi đã có cùng một vấn đề nhưng nó đã được gây ra bởi vì tôi đã trình biên dịch mức tuân thủ của tôi thiết lập để 1,5 trong khi sử dụng trình biên dịch 1,6. Tất cả các tính năng được bao gồm trong 1.6 (như javax.activation và một số khả năng xml được đề cập ở trên) sẽ bị "giới hạn" bởi trình biên dịch 1.6 nếu mức tuân thủ được đặt thấp hơn 1.6. Tôi vừa phải thêm các thư viện thích hợp (ví dụ: activation.jar) để loại bỏ vấn đề trong trường hợp của tôi.