GWT无法编译项目

时间:2012-02-02 17:36:25

标签: gwt gwt-rpc twitter4j

我正在使用GWT + twitter4j创建简单的Twitter应用程序。但我不能运行它或编译它。

这里有代码,请告诉我它有什么问题。

package in.isuru.twitter.server;

import java.util.ArrayList;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

import twitter4j.Query;
import twitter4j.QueryResult;
import twitter4j.Tweet;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;

public class Twit extends RemoteServiceServlet{

ArrayList<Tweet> tweets = new ArrayList<Tweet>();
//ArrayList<String> status = new ArrayList<String>();

public ArrayList<Tweet> search(String searchTerm){
    // The factory instance is re-useable and thread safe.
    Twitter twitter = new TwitterFactory().getInstance();
    Query query = new Query(searchTerm);
    QueryResult result = null;
    try {
        result = twitter.search(query);
    } catch (TwitterException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    for (Tweet tweet : result.getTweets()) {
        //System.out.println(tweet.getFromUser() + ":" + tweet.getText());
        tweets.add(tweet);

    }

    return tweets;
}

}

客户端,

package in.isuru.twitter.client;

import java.util.ArrayList;

import twitter4j.Tweet;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.RootPanel;

import in.isuru.twitter.server.*;

/**
  * Entry point classes define <code>onModuleLoad()</code>.
 */
 public class Twitter implements EntryPoint {

Twit twit = new Twit();
ArrayList<Tweet> allStatus;

public void onModuleLoad() {

     // Create a Flex Table
    final FlexTable flexTable = new FlexTable();
    FlexCellFormatter cellFormatter = flexTable.getFlexCellFormatter();
    flexTable.addStyleName("cw-FlexTable");
    flexTable.setWidth("32em");
    flexTable.setCellSpacing(5);
    flexTable.setCellPadding(3);

    // Add some text
    cellFormatter.setHorizontalAlignment(0, 1, HasHorizontalAlignment.ALIGN_LEFT);
    cellFormatter.setColSpan(0, 0, 2);

    //search in twitter
    allStatus = twit.search("sex");
    for (int i=0 ; i <allStatus.size() ; i++) {
        //System.out.println(tweet.getFromUser() + ":" + tweet.getText());
        Tweet tweet = allStatus.get(i);
        String user = tweet.getFromUser();
        String status = tweet.getText();
        addRow(flexTable, user);
        addRow(flexTable, status);

    }

    // Add two rows to start
    // addRow(flexTable, "This is testing status update");
    // addRow(flexTable, "This is testing status update");

    // Return the panel
    flexTable.ensureDebugId("cwFlexTable");
    RootPanel.get().add(flexTable);
  }

  /**
   * Add a row to the flex table.
   */
  private void addRow(FlexTable flexTable, String status) {
    int numRows = flexTable.getRowCount();
    flexTable.setText(numRows, 0, status);
    flexTable.getFlexCellFormatter().setRowSpan(0, 1, numRows + 1);
  }

  /**
   * Remove a row from the flex table.
   */
  private void removeRow(FlexTable flexTable) {
    int numRows = flexTable.getRowCount();
    if (numRows > 1) {
      flexTable.removeRow(numRows - 1);
      flexTable.getFlexCellFormatter().setRowSpan(0, 1, numRows - 1);
    }

}
}

这是我编译时得到的错误代码。

编译模块in.isuru.twitter.Twitter    验证新编译的单元       第一次通过时忽略了1个带编译错误的单元。 使用-strict或-logLevel进行编译设置为TRACE或DEBUG以查看所有错误。    查找入口点类       [错误]'文件中的错误:/ E:/workspace/Twitter/src/in/isuru/twitter/client/Twitter.java'          [错误]第20行:没有源代码可用于输入in.isuru.twitter.server.Twit;你忘了继承一个必需的模块吗?          [错误]第21行:没有源代码可用于类型twitter4j.Tweet;你忘了继承一个必需的模块吗?       [错误]无法找到类型'in.isuru.twitter.client.Twitter'          [错误]提示:以前的编译器错误可能导致此类型不可用          [错误]提示:检查模块中的继承链;它可能没有继承所需的模块,或者模块可能没有正确添加其源路径条目

提前致谢!

2 个答案:

答案 0 :(得分:0)

  

[错误]第20行:没有源代码可用于输入in.isuru.twitter.server.Twit;

这是你的问题 - 从包中,你已经声明Twit是一个服务器对象,因此GWT编译器没有使它可以在客户端上编译。

看起来您正在尝试直接调用服务器类Twit而不是异步调用它 - 再看一下RPC文档来创建远程服务,以及如何对它进行异步调用。 http://code.google.com/webtoolkit/doc/latest/tutorial/RPC.html

答案 1 :(得分:0)

你不能在GWT中使用任何java库。 GWT不是java,并且必须以特殊方式创建和配置库,这就是您收到此错误的原因。

我建议您阅读official documentation