2009-06-04 24 views
15

Đây là điều rõ ràng cần làm ...Liệt kê các plugin được cài đặt eclipse tại thời gian chạy

Làm cách nào để truy xuất danh sách các plugin được cài đặt khi chạy? Không thể nhìn thấy một cách rõ ràng để làm điều này một Platform.getBundle() đòi hỏi một tên plugin cụ thể.

Đây có phải là hạn chế đối với một số lý do bảo mật không?

Trả lời

12

Từ here:

Lớp BundleContext có một phương pháp getBundles() trả về gói tất cả các cài đặt.

Bạn nhận được một phiên bản của BundleContext khi gói của bạn được kích hoạt BundleActivator.start(BundleContext)).

Ví dụ: bạn có thể sử dụng nó để lấy một số ví dụ Bundle version number.

http://t-templier.developpez.com/tutoriel/java/osgi/osgi1/images/architecture-osgi-haut-niveau.png

Sự tương tác giữa các bó được thực hiện thông qua hai cơ chế bổ sung: gói xuất khẩu/nhập khẩu và cơ sở tra cứu đăng ký dịch vụ.

http://sfelix.gforge.inria.fr/osgi-security/images/osgi/osgi_interoperability.png

Việc công bố và tra cứu các dịch vụ được thực hiện thông qua các tài liệu tham khảo BundleContext rằng mỗi gói nhận được vào lúc khởi động.
Trong quá trình xuất bản, các gói quảng cáo đăng ký dịch vụ bằng cách xuất bản một giao diện Java mà nó đang triển khai và bằng cách cung cấp một lớp triển khai giao diện này.
Quá trình tra cứu được thực hiện bởi gói ứng dụng khách, dịch vụ này lấy dịch vụ từ BundleContext và sử dụng nó làm đối tượng Java chuẩn.

+0

lớn nhờ VonC, đó chỉ là những gì tôi cần. Cuối cùng tôi đã sử dụng phần mở rộng đăng ký và tìm thấy các plugin tôi đã tìm kiếm thông qua một phần mở rộng mà tất cả họ đều có chung nhưng câu trả lời này là một kinh điển. Bạn đang thảo luận về các dịch vụ vì đây là cách các gói khám phá sự hiện diện của nhau và do đó cho phép phát hiện các plugin đã cài đặt? – Bryji

+0

@Bryan: vâng, phần dịch vụ đã ở đó để cung cấp một chút ngữ cảnh (chơi chữ không có ý định) cho việc sử dụng BundleContext. – VonC

3

Nếu bạn đang tìm cách viết mã này vào mã của mình, hãy xem câu trả lời của VonC.

Nếu bạn chỉ muốn có chế độ xem thực hiện điều này, đã có một chế độ xem trong nhật thực: Window-> Show View-> Other ...-> PDE Runtime-> Plugin Registry. Điều này sẽ hiển thị các plugin, tiện ích mở rộng, phụ thuộc của họ và ai đang cung cấp tiện ích mở rộng.

2

Sử dụng đoạn mã sau để có được danh sách của plugin được cài đặt trong RCP của bạn

BundleContext ctx = FrameworkUtil.getBundle(your/Class/Name.class).getBundleContext(); 
Bundle[] bundles = ctx.getBundles(); 
Các vấn đề liên quan