2012-07-17 27 views
6

Trong ứng dụng RCP của tôi, tôi sử dụng mã này để chuyển sang quan điểm:Chuyển đổi phối cảnh trong ứng dụng RCP từ Eclipse Juno?

IWorkbenchWindow window = getViewSite().getWorkbenchWindow(); 
window.getWorkbench().showPerspective(PRODUCT_PERSPECTIVE_ID, window); 

tôi không thay đổi mã của tôi, nhưng tôi đã thay đổi Environnement Phát triển của tôi từ

java 6 64bits + windows + Eclipse Indigo 

để

java 7 32bits + windows + Eclipse Juno 

Và bây giờ quan điểm không chuyển đổi nữa, không có ngoại lệ và không có gì nghi ngờ có thể nhìn thấy trong gỡ lỗi.

Tôi không tìm thấy bất kỳ báo cáo lỗi nào.

Có giải thích nào không? Một cách giải quyết?

Trả lời

6

Tôi cũng đã gặp sự cố này. Theo như tôi có thể nói, đó là hồi quy trong Juno (4.2.0). Tôi đã sử dụng trình gỡ lỗi để thực hiện cuộc gọi đến showPerspective(). Không có bất kỳ nỗ lực rõ ràng nào để thực sự thay đổi quan điểm. Có lẽ có một người nghe sự kiện nội bộ bị thiếu hoặc có thể là cổng của showPerspective() với khung làm việc mới chưa hoàn thành.

Là một quan điểm công việc xung quanh, đoạn mã sau thay đổi thành công cho tôi:

IWorkbenchWindow window = getViewSite().getWorkbenchWindow(); 
IPerspectiveRegistry registry = workbench.getPerspectiveRegistry(); 
IWorkbenchPage page = window.getActivePage(); 
page.setPerspective(registry.findPerspectiveWithId(PRODUCT_PERSPECTIVE_ID)); 

Tùy theo bối cảnh trong đó các cuộc gọi được thực hiện, bạn có thể muốn để null-bảo vệ một số trong những cuộc gọi, hoặc kiểm tra Workbench.isClosing() để được an toàn.

+0

Cảm ơn. Đó không phải là giải pháp tôi chọn cho chương trình của mình, tôi đã làm những gì được viết trong câu trả lời của tôi vì Juno quá yếu và xấu xí để tham gia sản xuất hôm nay. Nhưng câu trả lời của bạn có vẻ tốt và có thể hữu ích cho người khác vì vậy cuối cùng tôi chấp nhận nó :) –

+2

@ dystroy Cảm ơn bạn đã chấp nhận. Tôi đã đi đến kết luận tương tự như bạn: các phiên bản 4.x vẫn còn quá lỗi. – WReach

1

Dưới đây là một câu trả lời mà nhằm mục đích làm rõ và giải quyết vấn đề của tôi:

Sử dụng Eclipse IDE 4, xây dựng một ứng dụng RCP developped trước Eclipse 4, tích hợp Java 7 tính năng và tương thích với Windows 32 bit. Và tất nhiên có thể chuyển đổi phối cảnh. Câu trả lời này không giải quyết được vấn đề của những người muốn chuyển đổi phối cảnh trong ứng dụng RCP VÀ sử dụng các tính năng hoặc giao diện của Nền tảng Eclipse 4 mới (không nên nhầm lẫn với IDE 4 của Eclipse). Nhưng tôi sẽ không khuyên bạn nên nó, ít nhất là cho một ứng dụng cũ (có nghĩa là developped trên Eclipse 3), cho rằng:

  • đó là rất chậm nó ám chỉ rằng ứng dụng hầu như không thể sử dụng
  • có rất nhiều trục trặc đồ họa
  • có lỗi, trong đó có một liên quan đến quan điểm chuyển

Đối với những 3 điểm, tôi không thể nói nếu đó là do nền tảng Eclipse 4 hoặc lớp tương thích Eclipse 3. Tôi hy vọng các ứng dụng mới được phát triển đặc biệt cho nền tảng Eclipse 4 mới sẽ chạy đúng.

Vì vậy, giải pháp của tôi là xác định mục tiêu Eclipse 3 và sử dụng nó cho bản dựng.

Dưới đây là các thủ tục hoàn chỉnh:

  1. Có JDK 7 cài đặt (32bits phiên bản)
  2. Cài đặt Eclipse 3.7 (32bits phiên bản)
  3. Cài đặt Eclipse 4 (32bits phiên bản)
  4. Launch Eclipse 4 và nhập các dự án cần thiết
  5. Chuyển đến Cửa sổ/Tùy chọn/Phát triển trình cắm/Nền tảng mục tiêu
  6. Nhấp vào "Thêm" rồi "Không có gì"
  7. Nhấp "Thêm" rồi "Cài đặt" và chọn Eclipse 3 của bạn.7 thư mục
  8. Khi mục tiêu của bạn tạo ra, chọn nó (vẫn còn trong Window/Preferences/Plug-in Development/Nền Đích)

Bây giờ, trong .product của bạn, "Eclipse sản phẩm Export Wizard" sẽ xây dựng một Eclipse 3 thực thi.

ghi chú thực tiễn:

  • "làm sạch tất cả" là không đủ và tôi đã phải dừng/khởi động lại Eclipse để làm cho nó làm việc, kể lựa chọn mục tiêu
  • quá trình cài đặt bị xóa số trên .product lĩnh vực của tôi. Tôi đã phải đặt lại ID và để kiểm tra "Sản phẩm bao gồm các đồ tạo tác tự chế bản địa"
2

Đây là lỗi https://bugs.eclipse.org/bugs/show_bug.cgi?id=395084 và được sửa cho Eclipse Luna dự kiến ​​phát hành vào tháng 6.

+0

+1 Cảm ơn. Tôi sẽ không thay đổi chấp nhận nhưng điều đó thật thú vị. –

+0

Không sao cả. Tôi đang thực sự sử dụng cách giải quyết được cung cấp ở đây bởi vì Luna chưa chính thức được phát hành và sử dụng nó cho các lỗi khác. –

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