How do I recompile an addon?

I would like to recompile the Timeline addon with some debugging statements added. I was able to create a Vaadin project and installed the timeline code and created a jar file with it without any problem. But when I include that jar file in a different (war-file) project, it gives me the error:

Widgetset does not contain implementation for com.vaadin.addon.timeline.Timeline. Check its @ClientWidgetset

so I’m not getting the widget installed in my project correctly. Can someone point me at the procedure for rebuilding an addon and then getting it
properly located in a project that wants to use it?

Thanks

nbc

Hi,

Does your jar file contains the source code files of client-side classes. Those are needed in widgetset compilation.

-Henri

As far as I can tell it does - I just extracted the timeline jar file and added a couple of print statements. It recompiles, and I can recompile the widgets (I created an eclipse project and just dropped the entire source tree from the original jar file on it). But when I try to include that new jar file in my main project, it doesn’t see the widgets - I recompiled the main program widgets and it did not pick up the timeline object - which I think is the underlying problem. I think I have things configured incorrectly, but I don’t know quite where to look…

This is the source directory for my Eclipse project to recompile the timeline jar file:

.
./com
./com/vaadin
./com/vaadin/addon
./com/vaadin/addon/timeline
./com/vaadin/addon/timeline/Timeline$DateFormatInfo.class
./com/vaadin/addon/timeline/Timeline$DateRangeListener.class
./com/vaadin/addon/timeline/Timeline$DateRangeChangedEvent.class
./com/vaadin/addon/timeline/Timeline$ChartMode.class
./com/vaadin/addon/timeline/Timeline$PropertyId.class
./com/vaadin/addon/timeline/Timeline.class
./com/vaadin/addon/timeline/Timeline$EventButtonClickEvent.class
./com/vaadin/addon/timeline/gwt
./com/vaadin/addon/timeline/gwt/canvas
./com/vaadin/addon/timeline/gwt/canvas/client
./com/vaadin/addon/timeline/gwt/canvas/client/Image.class
./com/vaadin/addon/timeline/gwt/canvas/client/Canvas.class
./com/vaadin/addon/timeline/gwt/canvas/client/Image.java
./com/vaadin/addon/timeline/gwt/canvas/client/Gradient.java
./com/vaadin/addon/timeline/gwt/canvas/client/ImageListener.class
./com/vaadin/addon/timeline/gwt/canvas/client/Canvas.java
./com/vaadin/addon/timeline/gwt/canvas/client/ImageListener.java
./com/vaadin/addon/timeline/gwt/canvas/client/impl
./com/vaadin/addon/timeline/gwt/canvas/client/impl/CanvasImplSafari.class
./com/vaadin/addon/timeline/gwt/canvas/client/impl/LinearGradientImpl.class
./com/vaadin/addon/timeline/gwt/canvas/client/impl/GradientImpl.class
./com/vaadin/addon/timeline/gwt/canvas/client/impl/CanvasImplMozilla.java
./com/vaadin/addon/timeline/gwt/canvas/client/impl/CanvasImplOpera.java
./com/vaadin/addon/timeline/gwt/canvas/client/impl/CanvasImplMozilla.class
./com/vaadin/addon/timeline/gwt/canvas/client/impl/CanvasImplSafari.java
./com/vaadin/addon/timeline/gwt/canvas/client/impl/GradientImpl.java
./com/vaadin/addon/timeline/gwt/canvas/client/impl/CanvasImplOpera.class
./com/vaadin/addon/timeline/gwt/canvas/client/impl/RadialGradientImpl.class
./com/vaadin/addon/timeline/gwt/canvas/client/impl/RadialGradientImpl.java
./com/vaadin/addon/timeline/gwt/canvas/client/impl/LinearGradientImpl.java
./com/vaadin/addon/timeline/gwt/canvas/client/impl/CanvasImpl.java
./com/vaadin/addon/timeline/gwt/canvas/client/impl/CanvasImpl.class
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie/VMLContext.java
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie/GradientImplIE.class
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie/JSOStack.java
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie/CanvasImplIE8.java
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie/VMLContext.class
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie/RadialGradientImplIE.class
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie/LinearGradientImplIE.class
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie/JSOStack.class
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie/CanvasImplIE.java
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie/ColorStop.class
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie/CanvasImplIE.class
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie/RadialGradientImplIE.java
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie/CanvasImplIE8.class
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie/ColorStop.java
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie/GradientImplIE.java
./com/vaadin/addon/timeline/gwt/canvas/client/impl/ie/LinearGradientImplIE.java
./com/vaadin/addon/timeline/gwt/canvas/client/Gradient.class
./com/vaadin/addon/timeline/gwt/canvas/gwt-canvas.gwt.xml
./com/vaadin/addon/timeline/gwt/TimelineWidgetSet.gwt.xml
./com/vaadin/addon/timeline/gwt/public
./com/vaadin/addon/timeline/gwt/public/timeline-widget
./com/vaadin/addon/timeline/gwt/public/timeline-widget/tooltipRightTop.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/marker.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/styles.css
./com/vaadin/addon/timeline/gwt/public/timeline-widget/arrow-left.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/scrollbar-area-bg.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/scroll-grip.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/right_arrow.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/vertical-sprites.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/arrow-right.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/scroller.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/tooltipLeft.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/tooltipRightBottom.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/move.cur
./com/vaadin/addon/timeline/gwt/public/timeline-widget/scatterChart.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/tooltipLeftBottom.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/tooltipBottom.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/tooltipTop.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/lineChart.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/popup_bg.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/tooltipRight.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/hold.cur
./com/vaadin/addon/timeline/gwt/public/timeline-widget/ajax-loader.gif
./com/vaadin/addon/timeline/gwt/public/timeline-widget/scroller_hover.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/tooltipLeftTop.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/barChart.png
./com/vaadin/addon/timeline/gwt/public/timeline-widget/scrollbar-bg.png
./com/vaadin/addon/timeline/gwt/client
./com/vaadin/addon/timeline/gwt/client/VTimelineDisplay$4.class
./com/vaadin/addon/timeline/gwt/client/VTimelineDisplay$1.class
./com/vaadin/addon/timeline/gwt/client/VTimelineWidget$6.class
./com/vaadin/addon/timeline/gwt/client/VTimelineWidget$4.class
./com/vaadin/addon/timeline/gwt/client/VTimelineBrowser$1.class
./com/vaadin/addon/timeline/gwt/client/VTimelineDisplay.java
./com/vaadin/addon/timeline/gwt/client/VTimelineBrowser.java
./com/vaadin/addon/timeline/gwt/client/VCanvasPlotter.class
./com/vaadin/addon/timeline/gwt/client/VCanvasPlotter$6.class
./com/vaadin/addon/timeline/gwt/client/VClientCache.java
./com/vaadin/addon/timeline/gwt/client/VDataListener.java
./com/vaadin/addon/timeline/gwt/client/VCanvasPlotter$5.class
./com/vaadin/addon/timeline/gwt/client/VClientCache$DataPoint.class
./com/vaadin/addon/timeline/gwt/client/VTimelineDisplay$PlotMode.class
./com/vaadin/addon/timeline/gwt/client/VDateFormatInfo.class
./com/vaadin/addon/timeline/gwt/client/VClientCache$DataRange.class
./com/vaadin/addon/timeline/gwt/client/VClientCache.class
./com/vaadin/addon/timeline/gwt/client/VTimelineWidget.java
./com/vaadin/addon/timeline/gwt/client/VTimelineWidget$5.class
./com/vaadin/addon/timeline/gwt/client/VTimelineWidget$7.class
./com/vaadin/addon/timeline/gwt/client/VCanvasPlotter$Graph.class
./com/vaadin/addon/timeline/gwt/client/VTimelineBrowser.class
./com/vaadin/addon/timeline/gwt/client/VCanvasPlotter$GraphPointComparator.class
./com/vaadin/addon/timeline/gwt/client/VCanvasPlotter$Point.class
./com/vaadin/addon/timeline/gwt/client/VTimelineWidget$9.class
./com/vaadin/addon/timeline/gwt/client/VCanvasPlotter$2.class
./com/vaadin/addon/timeline/gwt/client/VTimelineDisplay$2.class
./com/vaadin/addon/timeline/gwt/client/VCanvasPlotter.java
./com/vaadin/addon/timeline/gwt/client/VCanvasPlotter$7.class
./com/vaadin/addon/timeline/gwt/client/VCanvasPlotter$PlottingListener.class
./com/vaadin/addon/timeline/gwt/client/VTimelineWidget.class
./com/vaadin/addon/timeline/gwt/client/VTimelineWidget$3.class
./com/vaadin/addon/timeline/gwt/client/VCanvasPlotter$1.class
./com/vaadin/addon/timeline/gwt/client/VCanvasPlotter$4.class
./com/vaadin/addon/timeline/gwt/client/VTimelineWidget$8.class
./com/vaadin/addon/timeline/gwt/client/VTimelineBrowserScroller.java
./com/vaadin/addon/timeline/gwt/client/VTimelineBrowserScroller.class
./com/vaadin/addon/timeline/gwt/client/VTimelineBrowser$2.class
./com/vaadin/addon/timeline/gwt/client/VDateFormatInfo.java
./com/vaadin/addon/timeline/gwt/client/VCanvasPlotter$3.class
./com/vaadin/addon/timeline/gwt/client/VTimelineWidget$1.class
./com/vaadin/addon/timeline/gwt/client/VTimelineDisplay.class
./com/vaadin/addon/timeline/gwt/client/VDataListener.class
./com/vaadin/addon/timeline/gwt/client/VTimelineDisplay$3.class
./com/vaadin/addon/timeline/gwt/client/VTimelineWidget$2.class
./com/vaadin/addon/timeline/Timeline$1.class
./com/vaadin/addon/timeline/Timeline.java
./com/vaadin/addon/timeline/Timeline$EventClickListener.class
./com/vaadin/addon/timeline/Timeline$DataSourceListener.class

nbc

Hi,

Probably the problem is then that the manifest file of your jar doesn’t contain necessary definitions. If you use Eclipse to export the jar, you can use the “Vaadin Add-on Package” export that should generate necessary fields to the manifest file.

These are the add-on related definitions from jar’s META-INF/MANIFEST.MF file:

Vaadin-Package-Version: 1
Vaadin-Widgetsets: com.vaadin.addon.timeline.gwt.TimelineWidgetSet
Implementation-Title: Vaadin Timeline
Implementation-Version: 1.2.1
Implementation-Vendor: Vaadin Ltd

At least Vaadin-Package-Version and Vaadin-Widgetsets are required on widgetset compilation.

I understood what you said, but not how to make it happen. I probably took the wrong approach completely. What I did was to create a new Vaadin project, and then just copied the source files for the Timeline into it and created a jar file. I think you are correct, the resulting file does not look like a Vaadin widget.

So my question is - what do you mean by using Eclipse to export the jar - I’m a recent convert to Eclipse so I have very little experience with this. Do I want to do this in a new project (which is what I did) or inside of the project where I want to use the widget (which is what I was hoping to be able to do and couldn’t figure out…)

Pointers to the appropriate documentation or an example would be great…

Thanks in advance,

nbc