2016-12-05 4 views
1

Wenn ich Widgetset für mein Projekt kompiliere, überspringt es ein geerbtes Widgetset aus einem Jar auf dem Klassenpfad. Das Hinzufügen des erforderlichen Widgetsets zu meiner .gwt.xml-Datei von Hand hilft nicht, da das Erstellungsscript die Datei jedes Mal ersetzt, wenn ich das Widgetset neu kompiliere.Widgetset-Compiler kann Vaadin-Addon nicht finden

Speziell habe ich ein Projekt übernommen, das das Vaadin FilterTable Addon verwendet (so habe ich nur vaadin für ein paar Wochen verwendet). Ich habe das Addon von github heruntergeladen und ein paar Änderungen vorgenommen (aber nichts mit dem widgetset/connectors), dann habe ich versucht, die neue Version in meinem Hauptprojekt zu verwenden. Das Hinzufügen des FilteringTable7-Projekts zu meiner Bereitstellungsassembly funktioniert nicht, da das Projekt eine Hauptbenutzeroberflächenklasse enthält, die einigen Demotabellen zugeordnet ist, wodurch die Implementierung einer WAR-Datei anstelle einer JAR-Datei verursacht wird. Stattdessen habe ich eine FilteringTable7A.jar-Datei exportiert und diese in die Deployment-Assembly sowie in die Buildpfadbibliotheken (Classpath, nehme ich an) aufgenommen. Natürlich habe ich auch das offizielle Addon aus der Datei ivy.xml entfernt.

Das FilteringTable-Demoprojekt wird ordnungsgemäß mit meinen Änderungen erstellt und ausgeführt. Die .jar-Datei mit dem widgetset wurde in wtpwebapps/[project]/WEB-INF/lib/erfolgreich kopiert und im Klassenpfad in der detaillierten widgetset-Compilerausgabe aufgeführt. Der Compiler Ausgabe listet es nicht als gefunden 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/... 

So ist die Widgetset ohne Fehler kompiliert und wenn ich das Projekt laufen bekomme ich die berüchtigten

Widgetset ‚com.hra.diams. widgetset.DiamsWidgetset‘enthält keine Implementierung für ...

ich gelesen habe (und zuvor geholfen) aufgrund dieses Fehlers viele Antworten, aber in diesem Fall das Problem zeigt nicht das Servlet auf die richtige Widget Setzen Sie den Widgetset-Compiler auf das geerbte Widgetset. Als ich

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

meiner DiamsWidgetset.gwt.xml Datei hinzufügen und die widgsetset neu kompilieren, ignoriert der Compiler und ändert die Datei zurück.

Die seltsame Sache ist, dass es letzte Woche für ein paar Stunden gearbeitet hat, aber als ich etwas aktualisiert habe, um die letzte Änderung zu bekommen, hat es aufgehört zu arbeiten und wird jetzt nicht zurückkommen.

Wie kann ich den Compiler finden das erforderliche widgetset für das Addon?

Vielen Dank im Voraus.

Eclipse-3.7.2 mit Vaadin Plugin 2.2.0.201306261112 Publishing Tomcat v7.0

+0

Ich hatte ein ähnliches Problem, wenn ich Vaadin 7.2 verwendete. Soweit ich mich erinnere, gab es einen Fehler in Bezug auf die Widgetset-Kompilierung, der in 7.3 behoben wurde. Vielleicht nur versuchen, die neueste Version zu verwenden? Für mich ist mein Problem verschwunden, als ich auf die neueste Version upgraden. – JDC

Antwort

1

Ich scheine eine Lösung für mein spezielles Problem gefunden zu haben. Die MANIFEST.MF Datei Eclipse in meinem Glas war minimal und automatisch generiert. Wenn ich das Manifest aus dem Original-Jar kopierte, konnte der Widgetset-Compiler alles finden. Die automatisch überschriebene Datei DiamsWidgetset.gwt.xml enthält jetzt das korrekte geerbte Widgetset.

Ich vermute, die wichtigsten Linien, die ich auf dem Manifest

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

ich noch hinzufügen gebraucht werde die übliche bekommen „Widgetset Implementierung enthält nicht ...“ Fehler, aber der Widgetset Compiler ist nicht weitere Probleme haben. Wenn ich etwas Zeit habe, um alles aufzufrischen und die vielen anderen Ursachen dieses Fehlers zu überdenken, wird es das wahrscheinlich tun.