我正在用GWT + twitter4j创建简单的twitter应用程序。但我无法执行此操作或编译它。
这里是代码,请告诉我它有什么问题。
package in.isuru.twitter.server; import java.util.ArrayList; import com.google.gwt.user.server.rpc.RemoteServiceServlet; import twitter4j.Query; 导入twitter4j.QueryResult; 导入twitter4j.Tweet; 导入twitter4j.Twitter; import twitter4j.TwitterException; 导入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){ //工厂实例可重用且线程安全。 Twitter twitter = new TwitterFactory()。getInstance(); 查询查询=新查询(searchTerm); QueryResult result = null; 尝试{ result = twitter.search(query); } catch(TwitterException e){ // TODO自动生成的catch块 e.printStackTrace(); (Tweet tweet:result.getTweets()){ //System.out.println(tweet.getFromUser()+:+ tweet.getText()); } tweets.add(tweet); } 返回推文; } }和客户端一样,
package in.isuru.twitter.client; import java.util.ArrayList; 导入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; 导入in.isuru.twitter.server。*; / ** *入口点类定义< code> onModuleLoad()< / code> ;. * / 公共类Twitter实现入口点{ Twit twit = new Twit(); ArrayList< Tweet> allStatus; public void onModuleLoad(){ //创建一个Flex表格 final FlexTable flexTable = new FlexTable(); FlexCellFormatter cellFormatter = flexTable.getFlexCellFormatter(); flexTable.addStyleName(cw-FlexTable); flexTable.setWidth(32em); flexTable.setCellSpacing(5); flexTable.setCellPadding(3); //添加一些文本 cellFormatter.setHorizontalAlignment(0,1,HasHorizontalAlignment.ALIGN_LEFT); cellFormatter.setColSpan(0,0,2); //在twitter中搜索 allStatus = twit.search(sex); for(int i = 0; i< allStatus.size(); i ++){ //System.out.println(tweet.getFromUser()+:+ tweet.getText() ); 鸣叫= allStatus.get(i); String user = tweet.getFromUser(); String status = tweet.getText(); addRow(flexTable,user); addRow(flexTable,status); } //添加两行开始 // addRow(flexTable,这是测试状态更新); // addRow(flexTable,这是测试状态更新); //返回面板 flexTable.ensureDebugId(cwFlexTable); RootPanel.get()。add(flexTable); } / ** *向flex表添加一行。 * / private void addRow(FlexTable flexTable,String status){ int numRows = flexTable.getRowCount(); flexTable.setText(numRows,0,status); flexTable.getFlexCellFormatter()。setRowSpan(0,1,numRows + 1); } / ** *从flex表中删除一行。 * / 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' [错误]提示:以前的编译器错误可能导致此类型不可用 [错误]提示:检查来自你的模块的继承链;它可能不是继承一个必需的模块或一个模块可能没有正确添加它的源路径条目
在此先感谢!
解决方案你不能在GWT中使用任何Java库。 GWT不是java,库必须以特殊的方式创建和配置,这就是为什么你会得到这个错误。
我建议您阅读官方文档
I am creating simple twitter application with GWT+twitter4j. But I can't run this or compile it.
Here codes and please tell me what is wrong with it.
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; } }And client side,
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); } } }And here is the error code which i get when i compile it.
Compiling module in.isuru.twitter.Twitter Validating newly compiled units Ignored 1 unit with compilation errors in first pass. Compile with -strict or with -logLevel set to TRACE or DEBUG to see all errors. Finding entry point classes [ERROR] Errors in 'file:/E:/workspace/Twitter/src/in/isuru/twitter/client/Twitter.java' [ERROR] Line 20: No source code is available for type in.isuru.twitter.server.Twit; did you forget to inherit a required module? [ERROR] Line 21: No source code is available for type twitter4j.Tweet; did you forget to inherit a required module? [ERROR] Unable to find type 'in.isuru.twitter.client.Twitter' [ERROR] Hint: Previous compiler errors may have made this type unavailable [ERROR] 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
Thanks in advance!
解决方案You can't use just any java library in GWT. GWT is not java, and libraries have to be created and configured in special way, that's why you are getting this error.
I recommend to read official documentation
更多推荐
GWT无法编译该项目
发布评论