Hello.
I’ve just started to learn Vaadin and decided to try one of the code examples from Vaadin book.
Here is my code:
@SuppressWarnings("serial")
public class MyVaadinApplication extends Application
{
private Window window;
@Override
public void init()
{
window = new Window("My Vaadin Application");
setMainWindow(window);
window.addComponent(new WindowOpener("Window Opener", window));
}
}
class WindowOpener extends CustomComponent implements Window.CloseListener {
Window mainWindow;
Window myWindow;
Button openButton;
Button closeButton;
Label explanation;
public WindowOpener(String label, Window main) {
mainWindow = main;
final VerticalLayout layout = new VerticalLayout();
openButton = new Button("Open Window", this, "openButtonClick");
explanation = new Label("Explanation");
layout.addComponent(openButton);
layout.addComponent(explanation);
setCompositionRoot(layout);
}
public void openButtonClick(Button.ClickEvent event) {
myWindow = new Window("My Dialog");
myWindow.setPositionX(200);
myWindow.setPositionY(100);
mainWindow.addWindow(myWindow);
myWindow.addListener(this);
myWindow.addComponent(new Label("A text label in the window"));
closeButton = new Button("Close", this, "closeButtonClick");
myWindow.addComponent(closeButton);
openButton.setEnabled(false);
explanation.setValue("Window opened");
}
public void closeButtonClick(Button.ClickEvent event) {
mainWindow.removeWindow(myWindow);
openButton.setEnabled(true);
explanation.setValue("Closed with button");
}
public void windowClose(CloseEvent e) {
openButton.setEnabled(true);
explanation.setValue("Closed with window controls");
}
}
It compiles and when I start this web app I see a button and a label. But when I click the button I see this stacktrace:
SEVERE: Terminal error:
java.lang.RuntimeException: Internal error - please report
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:505)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:162)
at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1166)
at com.vaadin.ui.Button.fireClick(Button.java:380)
at com.vaadin.ui.Button.changeVariables(Button.java:196)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1297)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1217)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:733)
at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:296)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:483)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: java.lang.IllegalAccessException: Class com.vaadin.event.ListenerMethod can not access a member of class my.company.WindowOpener with modifiers "public"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)
at java.lang.reflect.Method.invoke(Method.java:588)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:490)
... 27 more
What am I doing wrong?
Thank you in advance.