GWT RPC无法编译该项目
这个问题是上一个问题的延伸 请看一下,告诉我有什么问题 客户端。 Twitter.javaGWT RPC无法编译该项目,gwt,gwt-rpc,twitter4j,Gwt,Gwt Rpc,Twitter4j,这个问题是上一个问题的延伸 请看一下,告诉我有什么问题 客户端。 Twitter.java package in.isuru.twitter.client; import java.util.ArrayList; import twitter4j.Tweet; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; import com.google.gwt.user.clie
package in.isuru.twitter.client;
import java.util.ArrayList;
import twitter4j.Tweet;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
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;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class Twitter implements EntryPoint {
private final TwitterServiceAsync searchService = GWT.create(TwitterService.class);
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);
searchService.search("love", new AsyncCallback<ArrayList<Tweet>>() {
@Override
public void onFailure(Throwable caught) {
//Not yet completed.
}
@Override
public void onSuccess(ArrayList<Tweet> result) {
for (int i=0 ; i <result.size() ; i++) {
Tweet tweet = result.get(i);
String user = tweet.getFromUser();
String status = tweet.getText();
addRow(flexTable, user);
addRow(flexTable, status);
}
}});
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);
}
}
}
TwitterService.java
package in.isuru.twitter.client;
import java.util.ArrayList;
import twitter4j.Tweet;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
@RemoteServiceRelativePath("search")
public interface TwitterService extends RemoteService {
ArrayList<Tweet> search(String searchTerm) throws IllegalArgumentException;
}
package in.isuru.twitter.client;
导入java.util.ArrayList;
导入twitter4j.Tweet;
导入com.google.gwt.user.client.rpc.RemoteService;
导入com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
@RemoteServiceRelativePath(“搜索”)
公共接口TwitterService扩展了RemoteService{
ArrayList搜索(String searchTerm)抛出IllegalArgumentException;
}
TwitterServiceAsync.java
package in.isuru.twitter.client;
import java.util.ArrayList;
import twitter4j.Tweet;
import com.google.gwt.user.client.rpc.AsyncCallback;
public interface TwitterServiceAsync {
void search(String searchTerm, AsyncCallback<ArrayList<Tweet>> callback) throws llegalArgumentException;
}
package in.isuru.twitter.client;
导入java.util.ArrayList;
导入twitter4j.Tweet;
导入com.google.gwt.user.client.rpc.AsyncCallback;
公共接口TwitterServiceAsync{
void search(字符串searchTerm,AsyncCallback回调)抛出llegalArgumentException;
}
服务器端
package in.isuru.twitter.server;
import java.util.ArrayList;
import twitter4j.Query;
import twitter4j.QueryResult;
import twitter4j.Tweet;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import in.isuru.twitter.client.TwitterService;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
public class TwitterServiceImpl extends RemoteServiceServlet implements TwitterService {
/**
*
*/
private static final long serialVersionUID = 1L;
ArrayList<Tweet> tweets = new ArrayList<Tweet>();
@Override
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) {
e.printStackTrace();
}
for (Tweet tweet : result.getTweets()) {
//System.out.println(tweet.getFromUser() + ":" + tweet.getText());
tweets.add(tweet);
}
return tweets;
}
}
package in.isuru.twitter.server;
导入java.util.ArrayList;
导入twitter4j.Query;
导入twitter4j.QueryResult;
导入twitter4j.Tweet;
导入twitter4j.Twitter;
导入twitter4j.TwitterException;
导入twitter4j.TwitterFactory;
导入in.isuru.twitter.client.TwitterService;
导入com.google.gwt.user.server.rpc.RemoteServiceServlet;
公共类TwitterServiceImpl扩展RemoteServiceServlet实现TwitterService{
/**
*
*/
私有静态最终长serialVersionUID=1L;
ArrayList tweets=新建ArrayList();
@凌驾
公共ArrayList搜索(字符串搜索项){
//工厂实例是可重用和线程安全的。
Twitter=new TwitterFactory().getInstance();
查询=新查询(searchTerm);
QueryResult结果=null;
试一试{
结果=twitter.search(查询);
}捕获(twitter异常){
e、 printStackTrace();
}
for(Tweet-Tweet:result.getTweets()){
//System.out.println(tweet.getFromUser()+“:”+tweet.getText());
添加(tweet);
}
返回推文;
}
}
Twitter.gwt.xml
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='twitter'>
<!-- 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 -->
<!-- Specify the app entry point class. -->
<entry-point class='in.isuru.twitter.client.Twitter'/>
<!-- Specify the paths for translatable code -->
<source path='client'/>
<source path='shared'/>
</module>
错误是
[调试][推特]-验证新编译的单元[跟踪][推特]-查找入口点类[ERROR][twitter]-“文件:/E:/workspace/twitter/src/in/isuru/twitter/client/twitter.java”中的错误
[错误][twitter]-第43行:没有可用于类型的源代码
twitter4j.Tweet;您是否忘记继承所需的模块?[错误]
[twitter]-在
'文件:/E:/workspace/Twitter/src/in/isuru/Twitter/client/TwitterServiceAsync.java'
[错误][twitter]-第11行:没有可用于类型的源代码
twitter4j.Tweet;您是否忘记继承所需的模块?[错误]
[twitter]-在.isuru.twitter.client.twitter中找不到类型“
[错误][twitter]-提示:以前的编译器错误可能已导致
此类型不可用[错误][twitter]-提示:检查
从您的模块继承链;它可能没有继承一个
所需模块或模块可能未添加其源路径项
正确[错误][twitter]-未能从用户加载模块“twitter”
代理Mozilla/5.0(Windows NT 6.1)AppleWebKit/535.7(KHTML,如
壁虎)铬合金/16.0.912.77狩猎/535.7',127.0.0.1:7901
类
twitter4j.Tweet
不能在客户端代码中使用,因为它不包含在任何继承的GWT模块中。您需要创建自己的传输对象类,例如tweedto
在客户端
或共享
包中的某处。只有此对象应在接口TwitterServiceAsync
和TwitterService
中使用。然后在servlet中,创建tweedto
将所需值从Tweet
复制到tweedto
,然后返回tweedto
列表