2016-12-05 43 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的编译器是不有更多的问题。当我有一些时间来刷新所有内容并重新解决这个错误的其他原因时,它可能会这样做。

相关问题