2016-12-05 70 views
1

當我爲我的項目編譯widgetset時,它會從類路徑上的jar中跳過繼承的widgetset。手動將必要的widgetset添加到我的.gwt.xml文件中並沒有幫助,因爲每次我重新編譯widgetset時,構建腳本都會替換文件。Widgetset編譯器無法找到Vaadin插件

具體來說,我接管了一個項目,使用vaadin FilterTable插件(所以我只用了幾個星期的vaadin)。我從github上下載了插件,並做了一些更改(但沒有涉及widgetset/connectors),然後嘗試在我的主項目中使用新版本。將FilteringTable7項目添加到我的部署程序集中將不起作用,因爲該項目包含與某些演示表關聯的主UI類,導致部署了.war而不是.jar。相反,我導出了一個FilteringTable7A.jar文件,並將其包含在部署程序集以及構建路徑庫(classpath,我假設)中。當然,我也從ivy.xml文件中刪除了官方插件。

FilteringTable演示項目根據我的更改構建並正確運行。包含widgetset的.jar文件已成功複製到wtpwebapps/[project]/WEB-INF/lib /中,並在詳細的widgetset編譯器輸出的類路徑中列出。編譯器輸出沒有將其列爲發現視窗元件:

Widgetsets found from classpath: 
    org.vaadin.hene.popupbutton.widgetset.PopupbuttonWidgetset in jar:file:C:/Users/matt/.ivy2/cache/org.vaadin.addons/popupbutton/jars/popupbutton-2.5.0.jar!/ 
    com.vaadin.DefaultWidgetSet in jar:file:C:/Users/matt/.ivy2/cache/com.vaadin/vaadin-client/jars/vaadin-client-7.1.11.jar!/ 
    com.hra.diams.widgetset.DiamsWidgetset in file://C/Users/matt/Documents/... 

所以視窗元件沒有錯誤編譯,當我運行該項目,我得到了臭名昭著的

視窗元件「com.hra.diams。 widgetset.DiamsWidgetset」不包含 實施...

我已閱讀(和先前已由幫助),與此相關的錯誤很多答案,但在這種情況下,問題不指向該servlet正確小部件設置,它將widgetset編譯器指向繼承的widgetset。當我添加

<inherits name="org.tepi.filtertable.gwt.FilterTableWidgetset" /> 

我DiamsWidgetset.gwt.xml文件並重新編譯widgsetset,編譯器會忽略它,並更改文件回來。

奇怪的是,它上週工作了幾個小時,但是當我刷新一些東西以獲得最新改變時,它停止工作,現在不會再回來。

如何讓編譯器找到插件所需的widgetset?

在此先感謝。

與Vaadin插件的Eclipse 3.7.2 2.2.0.201306261112 發佈到Tomcat V7.0

+0

我在使用Vaadin 7.2時遇到了類似的問題。據我記得,在7.3中已經修復了一個關於widgetset編譯的bug。也許只是嘗試使用最新版本?對我來說,當我升級到最新版本時,我的問題消失了。 – JDC

回答

1

我似乎已經找到了解決我的具體問題。放在我的jar中的MANIFEST.MF文件是最小的並且是自動生成的。當我從原始jar複製清單時,widgetset編譯器能夠找到所有東西。自動覆蓋的DiamsWidgetset.gwt.xml文件現在包含正確的繼承的widgetset。

我懷疑我需要添加到清單中的關鍵線路是

Vaadin-Package-Version: 1 
Vaadin-Widgetsets: org.tepi.filtertable.gwt.FilterTableWidgetset 

我仍然得到一貫的「視窗元件不包含實現......」的錯誤,但Widgetset的編譯器是不有更多的問題。當我有一些時間來刷新所有內容並重新解決這個錯誤的其他原因時,它可能會這樣做。