我正在用GWT + twitter4j创建简单的twitter应用程序。但我无法运行或编译它。GWT无法编译项目
这里代码和请告诉我什么是错的。
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” [错误]提示:以前的编译器错误可能使这一类型的不可用 [错误]提示:请检查您的模块继承链;它可能不是继承所需的模块或模块可能未事先加入适量的源路径条目
谢谢!
好了,使用这个库的人,twitter4j与GWT。 http://ililiililililii.blog.de/2010/08/21/gwt-gae-twitter-in-20-minutes-9217888/ – Isuru 2012-02-03 00:28:57
@isurumadusanka在从twiter4j所提供的教程的所有代码用于在服务器端。没有一个代码实际用于GWT应用程序客户端代码(这是不可能的,因为twitter4j是一个普通的java库) – jusio 2012-02-03 00:35:58
好的!谢谢!我尝试过GWT RPC。但它仍然会给出错误。 – Isuru 2012-02-03 00:37:32