2012-05-04 38 views
5

Ứng dụng của chúng tôi đã di chuyển sang OSGi, nhưng tôi gặp sự cố khi khởi động/gỡ lỗi trong Eclipse. Quá trình là gì: là nhà phát triển ứng dụng OSGi dự kiến ​​sẽ thiết lập môi trường Equinox, cài đặt hàng trăm gói (jar = bundle?) Và bắt đầu từ giao diện điều khiển? Nói cách khác, đang khởi chạy ứng dụng "hot-plug-gifted" khác với ứng dụng "mô-đun thách thức"?Chạy/gỡ lỗi ứng dụng OSGi trong Eclipse

Câu hỏi phụ, cụ thể hơn. Có một bó bootstrap mà là nghĩa vụ phải chăm sóc tất cả mọi thứ, nhưng sau khi tải loạt các lớp nó chậm và gần như bị treo tại địa chỉ:

... 
... 
... 
Flat profile of 0.22 secs (16 total ticks): main 

    Interpreted + native Method       
16.7%  1 +  0 java.awt.Toolkit.addAWTEventLi[Loaded java.awt.SentEvent from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
stener 
16.7%  1 +  0 jav[Loaded java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
a.util.regex.Pattern.compile 
16.7%  1 +  0 sun.util.logging.PlatformLogger.<init> 
50.0%  3 +  0 Total interpreted 

    Thread-local ticks: 
62.5% 10    Blocked (of total) 
50.0%  3    Class loader 

... 
... 
... 
[Loaded sun.reflect.Label$PatchInfo from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
[Loaded sun.reflect.MethodAccessorGenerator$1 from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
[Loaded sun.reflect.ClassDefiner from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
[Loaded sun.reflect.ClassDefiner$1 from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
[Loaded sun.reflect.GeneratedMethodAccessor1 from __JVM_DefineClass__] 
[Dynamic-linking native method sun.java2d.DefaultDisposerRecord.invokeNativeDispose ... JNI] 
[Dynamic-linking native method java.lang.ref.Finalizer.invokeFinalizeMethod ... JNI] 

Chỉnh sửa: tiến triển một chút kể từ khi câu hỏi đăng

[Loaded sun.reflect.GeneratedMethodAccessor1 from __JVM_DefineClass__] 
[Dynamic-linking native method sun.java2d.DefaultDisposerRecord.invokeNativeDispose ... JNI] 
[Dynamic-linking native method java.lang.ref.Finalizer.invokeFinalizeMethod ... JNI] 
--- new stuff --- 
[Loaded sun.awt.windows.WComponentPeer$2 from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
[Dynamic-linking native method sun.awt.windows.WInputMethod.disableNativeIME ... JNI] 

Vì vậy, nó không phải là một bế tắc, những gì có thể làm cho nó quá excrutiatingly chậm?

Trả lời

4

Khởi chạy và gỡ lỗi trong Eclipse nên khá rõ ràng. Bí quyết (theo quan điểm của tôi) là nhận ra rằng tất cả các hỗ trợ Eclipse mà bạn cần đều được gắn nhãn 'plug-in' thay vì 'OSGi'. Thiết lập một nền tảng đích với tất cả các gói bên ngoài mà bạn cần - bạn chỉ có thể đổ chúng vào một thư mục và sau đó trỏ đến trình cấu hình nền tảng đích tại thư mục đó. Cấu hình nền tảng đích nằm trong Preferences-> Plug-in Development-> Target Platform. Bạn có thể chia sẻ nền tảng đích dưới dạng tệp .target. Có một nền tảng mục tiêu tốt sẽ giúp cả chạy và biên dịch.

Để chạy các gói của bạn, hãy nhấp chuột phải và chọn Chạy dưới dạng -> Khung OSGi (hoặc gỡ lỗi dưới dạng). Bạn có thể tinh chỉnh gói nào được bao gồm trong cấu hình thời gian chạy và đối số nào được sử dụng. Ví dụ: bạn có thể muốn thêm -console. Bạn cũng có thể tạo một ứng dụng để xuất, sẽ cung cấp cho bạn một tệp config.ini. Khi bạn có số config.ini, các gói của bạn sẽ được cài đặt sẵn khi khởi động Equinox.

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