GWT无法加载模块

时间:2011-12-09 15:39:54

标签: gwt module compiler-errors

我是Google应用引擎的新手,我正在开展一个项目。我刚刚创建了一个应用程序,当我尝试运行它时,它显示错误:

[ERROR] [ukstudentfeedback] Failed to load module 'ukstudentfeedback' from user agent 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2' at localhost:51937.

以下是我的代码的快照:

package com.ukstudentfeedback.client;

import java.io.UnsupportedEncodingException;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.dom.client.KeyUpHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;

public class Ukstudentfeedback implements EntryPoint{


    // ...
    public void onModuleLoad()
    {
        java.lang.System.out.println("I finally worked!");
        final Button sendButton;
        final TextBox toField, fromField, subjectField, messageField;

        sendButton = new Button("Send");
        toField = new TextBox();
        fromField = new TextBox();
        subjectField = new TextBox();
        messageField = new TextBox();

        sendButton.addStyleName("sendButton");

        toField.setText("Testing");
     // Add the nameField and sendButton to the RootPanel
     // Use RootPanel.get() to get the entire body element
        RootPanel.get("sendButton").add(sendButton);
        RootPanel.get("To").add(toField);
        RootPanel.get("From").add(fromField);
        RootPanel.get("Subject").add(subjectField);
        RootPanel.get("Message").add(messageField);

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

                sendButton.setEnabled(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) {
                    java.lang.System.out.println("I have been clisked");
                    sendMessage();
                }

                @Override
                public void onKeyUp(KeyUpEvent event) {
                    // TODO Auto-generated method stub

                }



            public void sendMessage()
            {
                Properties props = new Properties();
                Session session = Session.getDefaultInstance(props, null);
                /*
                 * Get all the user's inputs
                 */
                String to = toField.getText();
                String from = fromField.getText();
                String subject = subjectField.getText();
                String message = messageField.getText();

                try 
                {
                    Message msg = new MimeMessage(session);
                    msg.setFrom(new InternetAddress(from, "Admin"));
                    msg.addRecipient(Message.RecipientType.TO,
                                     new InternetAddress(to, "Mr. User"));
                    msg.setSubject(subject);
                    msg.setText(message);
                    Transport.send(msg);

                } 
                catch (AddressException e) 
                {
                    // ...
                } catch (MessagingException e) 
                {
                    // ...
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }

    }
    // Add a handler to send the name to the server
            MyHandler handler = new MyHandler();
            sendButton.addClickHandler(handler);
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='ukstudentfeedback'>
  <!-- Inherit the core Web Toolkit stuff.                        -->
  <inherits name='com.google.gwt.user.User'/>

  <!-- Inherit the default GWT style sheet.  You can change       -->
  <!-- the theme of your GWT application by uncommenting          -->
  <!-- any one of the following lines.                            -->
  <inherits name='com.google.gwt.user.theme.clean.Clean'/>
  <!-- <inherits name='com.google.gwt.user.theme.standard.Standard'/> -->
  <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
  <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/>     -->

  <!-- Other module inherits                                      -->
  <inherits name='com.ukstudentfeedback.Ukstudentfeedback'/>
  <!-- Specify the app entry point class.                         -->
  <entry-point class='com.ukstudentfeedback.client.Ukstudentfeedback'/>

  <!-- Specify the paths for translatable code                    -->
  <source path='client'/>
  <source path='shared'/>

</module>

错误:

[DEBUG] [ukstudentfeedback] - Validating newly compiled units
[TRACE] [ukstudentfeedback] - Finding entry point classes
    [ERROR] [ukstudentfeedback] - Errors in 'file:/Users/umajosiah/Programming/Java/eclipse/workspace/ukstudentfeedback/src/com/ukstudentfeedback/client/Ukstudentfeedback.java'
        [ERROR] [ukstudentfeedback] - Line 8: The import javax.mail cannot be resolved
        [ERROR] [ukstudentfeedback] - Line 9: The import javax.mail cannot be resolved
        [ERROR] [ukstudentfeedback] - Line 10: The import javax.mail cannot be resolved
        [ERROR] [ukstudentfeedback] - Line 11: The import javax.mail cannot be resolved
        [ERROR] [ukstudentfeedback] - Line 12: The import javax.mail cannot be resolved
        [ERROR] [ukstudentfeedback] - Line 13: The import javax.mail cannot be resolved
        [ERROR] [ukstudentfeedback] - Line 14: The import javax.mail cannot be resolved
        [ERROR] [ukstudentfeedback] - Line 80: Session cannot be resolved to a type
        [ERROR] [ukstudentfeedback] - Line 80: Session cannot be resolved
        [ERROR] [ukstudentfeedback] - Line 91: Message cannot be resolved to a type
        [ERROR] [ukstudentfeedback] - Line 91: MimeMessage cannot be resolved to a type
        [ERROR] [ukstudentfeedback] - Line 92: InternetAddress cannot be resolved to a type
        [ERROR] [ukstudentfeedback] - Line 93: Message cannot be resolved
        [ERROR] [ukstudentfeedback] - Line 94: InternetAddress cannot be resolved to a type
        [ERROR] [ukstudentfeedback] - Line 97: Transport cannot be resolved
        [ERROR] [ukstudentfeedback] - Line 100: AddressException cannot be resolved to a type
        [ERROR] [ukstudentfeedback] - Line 103: MessagingException cannot be resolved to a type
    [ERROR] [ukstudentfeedback] - Unable to find type 'com.ukstudentfeedback.client.Ukstudentfeedback'
        [ERROR] [ukstudentfeedback] - Hint: Previous compiler errors may have made this type unavailable
        [ERROR] [ukstudentfeedback] - Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly
[ERROR] [ukstudentfeedback] - Failed to load module 'ukstudentfeedback' from user agent 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2' at localhost:51937

2 个答案:

答案 0 :(得分:2)

问题是你正在尝试在客户端上使用未实现的java类。邮件需要从服务器发生,服务器永远不能从javax.mail类传回任何内容。

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

这些都不是可序列化的,并且没有一个可以转换为Javascript,因为它们都不是由GWT实现的。详细了解herehere

答案 1 :(得分:0)

您只能使用GWT模拟的类。包模式javax.mail未模拟。 您必须在服务器上执行此操作。

    [ERROR] [ukstudentfeedback] - Line 8: The import javax.mail cannot be resolved
    [ERROR] [ukstudentfeedback] - Line 9: The import javax.mail cannot be resolved
    [ERROR] [ukstudentfeedback] - Line 10: The import javax.mail cannot be resolved
    [ERROR] [ukstudentfeedback] - Line 11: The import javax.mail cannot be resolved
    [ERROR] [ukstudentfeedback] - Line 12: The import javax.mail cannot be resolved
    [ERROR] [ukstudentfeedback] - Line 13: The import javax.mail cannot be resolved
    [ERROR] [ukstudentfeedback] - Line 14: The import javax.mail cannot be resolved

请参阅以下链接:

http://code.google.com/webtoolkit/doc/latest/RefJreEmulation.html