2015-04-06 80 views
0

我使用:GWT Designer不工作

的Eclipse 4.3开普勒JDK GWT与Eclipse 4.3(通过市场下载) GWT版本是通过市场与GWT默认2.6下载兼容。 0 Eclipse的Java编译器的版本是1.7 这不是一个Maven项目

当我尝试做打开GWT入口点类(这是一个UI),它抛出波纹管错误:

入口点类(默认创建b创建一个新的GWT项目)当y蚀:

package xsdf.com.client; 

import xsdf.com.shared.FieldVerifier; 

/** 
* Entry point classes define <code>onModuleLoad()</code>. 
*/ 
public class Xxwa implements EntryPoint { 
    /** 
    * The message displayed to the user when the server cannot be reached or 
    * returns an error. 
    */ 
    private static final String SERVER_ERROR = "An error occurred while " 
      + "attempting to contact the server. Please check your network " 
      + "connection and try again."; 

    /** 
    * Create a remote service proxy to talk to the server-side Greeting service. 
    */ 
    private final GreetingServiceAsync greetingService = GWT 
      .create(GreetingService.class); 

    /** 
    * This is the entry point method. 
    */ 
    public void onModuleLoad() { 
     final Button sendButton = new Button("Send"); 
     final TextBox nameField = new TextBox(); 
     nameField.setText("GWT User"); 
     final Label errorLabel = new Label(); 

     // We can add style names to widgets 
     sendButton.addStyleName("sendButton"); 

     // Add the nameField and sendButton to the RootPanel 
     // Use RootPanel.get() to get the entire body element 
     RootPanel.get("nameFieldContainer").add(nameField); 
     RootPanel.get("sendButtonContainer").add(sendButton); 
     RootPanel.get("errorLabelContainer").add(errorLabel); 

     // Focus the cursor on the name field when the app loads 
     nameField.setFocus(true); 
     nameField.selectAll(); 

     // Create the popup dialog box 
     final DialogBox dialogBox = new DialogBox(); 
     dialogBox.setText("Remote Procedure Call"); 
     dialogBox.setAnimationEnabled(true); 
     final Button closeButton = new Button("Close"); 
     // We can set the id of a widget by accessing its Element 
     closeButton.getElement().setId("closeButton"); 
     final Label textToServerLabel = new Label(); 
     final HTML serverResponseLabel = new HTML(); 
     VerticalPanel dialogVPanel = new VerticalPanel(); 
     dialogVPanel.addStyleName("dialogVPanel"); 
     dialogVPanel.add(new HTML("<b>Sending name to the server:</b>")); 
     dialogVPanel.add(textToServerLabel); 
     dialogVPanel.add(new HTML("<br><b>Server replies:</b>")); 
     dialogVPanel.add(serverResponseLabel); 
     dialogVPanel.setHorizontalAlignment(VerticalPanel.ALIGN_RIGHT); 
     dialogVPanel.add(closeButton); 
     dialogBox.setWidget(dialogVPanel); 

     // Add a handler to close the DialogBox 
     closeButton.addClickHandler(new ClickHandler() { 
      public void onClick(ClickEvent event) { 
       dialogBox.hide(); 
       sendButton.setEnabled(true); 
       sendButton.setFocus(true); 
      } 
     }); 

     // Create a handler for the sendButton and nameField 
     class MyHandler implements ClickHandler, KeyUpHandler { 
      /** 
      * Fired when the user clicks on the sendButton. 
      */ 
      public void onClick(ClickEvent event) { 
       sendNameToServer(); 
      } 

      /** 
      * Fired when the user types in the nameField. 
      */ 
      public void onKeyUp(KeyUpEvent event) { 
       if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) { 
        sendNameToServer(); 
       } 
      } 

      /** 
      * Send the name from the nameField to the server and wait for a response. 
      */ 
      private void sendNameToServer() { 
       // First, we validate the input. 
       errorLabel.setText(""); 
       String textToServer = nameField.getText(); 
       if (!FieldVerifier.isValidName(textToServer)) { 
        errorLabel.setText("Please enter at least four characters"); 
        return; 
       } 

       // Then, we send the input to the server. 
       sendButton.setEnabled(false); 
       textToServerLabel.setText(textToServer); 
       serverResponseLabel.setText(""); 
       greetingService.greetServer(textToServer, 
         new AsyncCallback<String>() { 
          public void onFailure(Throwable caught) { 
           // Show the RPC error message to the user 
           dialogBox 
             .setText("Remote Procedure Call - Failure"); 
           serverResponseLabel 
             .addStyleName("serverResponseLabelError"); 
           serverResponseLabel.setHTML(SERVER_ERROR); 
           dialogBox.center(); 
           closeButton.setFocus(true); 
          } 

          public void onSuccess(String result) { 
           dialogBox.setText("Remote Procedure Call"); 
           serverResponseLabel 
             .removeStyleName("serverResponseLabelError"); 
           serverResponseLabel.setHTML(result); 
           dialogBox.center(); 
           closeButton.setFocus(true); 
          } 
         }); 
      } 
     } 

     // Add a handler to send the name to the server 
     MyHandler handler = new MyHandler(); 
     sendButton.addClickHandler(handler); 
     nameField.addKeyUpHandler(handler); 
    } 
} 

,当我尝试打开与GWT Designer中的上述类错误:

Internal Error 
encountered unexpected internal error. 

This could be caused by a bug or by a misconfiguration issue, conflict, partial update, etc. 

java.lang.NoSuchMethodError: com.google.gwt.dev.cfg.ModuleDefLoader.loadFromClassPath(Lcom/google/gwt/core/ext/TreeLogger;Ljava/lang/String;Z)Lcom/google/gwt/dev/cfg/ModuleDef; 



Show stack trace. 
Hide stack trace. 

Stack trace: 
java.lang.NoSuchMethodError: com.google.gwt.dev.cfg.ModuleDefLoader.loadFromClassPath(Lcom/google/gwt/core/ext/TreeLogger;Ljava/lang/String;Z)Lcom/google/gwt/dev/cfg/ModuleDef; 
    at com.google.gwt.dev.shell.designtime.HostedModeSupportImpl.loadModule(HostedModeSupportImpl.java:85) 
    at com.google.gwt.dev.shell.designtime.HostedModeSupportImpl.createModuleSpaceHost(HostedModeSupportImpl.java:64) 
    at sun.reflect.NativeMetho 

我已经检查可能出现的问题:

如果我使用GWT设计器遇到NoSuchMethodError或NoClassDefFoundError,该怎么办?

https://developers.google.com/web-toolkit/tools/gwtdesigner/faq#NoSuchMethodError

我已经尝试过不同的虚拟机,1.8,1.6;

GWT设计师是否仍然是ative?设计用户界面是更好的选择吗? 如何纠正此错误并使GWT设计器正常工作?

+0

您可能想要将GWT版本更新为2.6.1。这是基于此[链接]的错误(https://code.google.com/p/google-web-toolkit/issues/detail?id=8649) – 2015-04-06 06:14:48

回答

2

GWT Designer没有维护。它不适用于GWT 2.6.0或2.7,并可能不适用于较新的版本。它可以与2.6.1协同工作,但我不建议使用除最新版本以外的任何其他版本,特别是“经典”DevMode也不推荐使用:2.7是SuperDevMode真正可用的第一个版本,它将继续在未来版本中有所改进。

+0

就是这样! GWT设计师将不会更加修饰?为什么?非常好的项目... – felipe 2015-04-07 21:54:24