我的Eclipse 4 RCP應用程序有一個奇怪的問題,有時由於缺少contributorURI
而不能翻譯某些菜單項。由fragment.e4xmi貢獻的MenuItems沒有被翻譯,contributorURI丟失
形勢
我目前正在其上由多個局部插件的一個Eclipse RCP 4應用程序。其中一個插件是com.mobatime.nms.masterclock.common.ui
。它的fragment.e4xmi
貢獻了一些本地MenuItems
到主菜單欄,由另一個插件(com.mobatime.nms.app
)的Application.e4xmi
「控制」。對於本地化,我的意思是MenuItem
的標籤是在OSGI-INF/l10n/bundle.properties
文件中定義的OSGI
變量(例如%commands.somecommand
)。
然而,在我的應用程序的所有啓動的約50%,該MenuItems
貢獻的masterclock
插件沒有被翻譯,使OSGI
變量的名稱作爲標籤的MenuItem
。
事情我已經找到了
在互聯網上經過一番研究,我發現this thread這顯然說明比較類似我這樣的問題。然而,該線程已經有五年了,他們發現的描述錯誤在舊版本的Eclipse SDK中得到修復。
我將ModelSpy插件導入到我的應用程序中,因爲它幫助我找到上述線程中的錯誤。在檢查
MenuItems
後,我發現每個項目的contributorURI
沒有設置,當翻譯缺失時。翻譯完成後,
contributerURI
的捐款MenuItem
包含platform:/plugin/com.mobatime.nms.masterclock.common.ui
。
信息
- 我們使用最新版本的Eclipse庫(SDK,RCP等)。
- 問題也出現在這些庫的舊版本上(我們之前使用的是版本4.4.2)。
- Eclipse IDE中的常規構建和調試會話沒有區別,錯誤無處不在。
- 對於其他項目,
contributorURI
正在填寫正確。 - 在
org.eclipse.e4.workbench
元數據的workbench.xmi
文件中,貢獻者URI未保存在受影響的MenuItems
中。 - 使用
-clearPersistedState
時,不會發生該問題。
有沒有人有一個想法如何解決這個問題?
您使用的持久性狀態,使模型從保存的狀態重新加載或正在使用'-clearPersistedState'防止這種情況(這樣該模型是從每個片段構建的)? –
我沒有使用'clearPersistedState',但是當我將它添加到我的調試配置時,問題不再發生。可能是Eclipse持久化邏輯中的一個錯誤? – appnic
您可以查看'org.eclipse.e4.workbench'元數據中'workbench.xmi'文件中的持久狀態,以查看是否正在保存contributorURI。 –