我正在开发一个GWT应用程序来从Freebase获取查询结果。现在我在我的服务实现类中使用以下代码。
import com.freebase.api.Freebase;
import com.freebase.json.JSON;
import com.google.tracker.client.FreebaseService;
import com.google.tracker.client.freebaseapi.Freebase;
import com.google.tracker.client.freebasejson.JSON;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
public class FreebaseServiceImpl extends RemoteServiceServlet implements FreebaseService{
public String getDirectorName() throws IllegalArgumentException{
Freebase freebase = Freebase.getFreebase();
String query_str = "{" +
"'id': null," +
"'type': '/film/film'," +
"'name': 'Blade Runner'," +
"'directed_by': [{" +
"'id': null," +
"'name': null" +
"}]" +
"}".replace('\'', '"');
JSON query = new JSON(query_str);
JSON result = freebase.mqlread(query);
@SuppressWarnings("unused")
String director = result.get("result").get("directed_by").get(0).get("name").string();
return director;
}
}
我在运行应用程序时遇到以下错误:
500服务器上的呼叫失败;有关详细信息,请参阅服务器日志。
这些可能的原因是什么?
答案 0 :(得分:1)
该代码甚至无法编译,因为您的导入名称冲突(重复Freebase,JSON)。你甚至可以在开始之前解决这个问题。
据我所知,谷歌没有使用com.google.tracker命名空间的任何内容。如果那是this question中的代码,则应将包名更改为您控制的名称空间中的内容。
您正在使用的客户端库使用已弃用的Freebase API。由于您正在进行新的开发,因此您应该使用新的API。
如果您在修复所有基本内容后仍遇到问题,请更新您的问题或发布新问题。
答案 1 :(得分:0)
您可以使用此客户端库来使用Freebase API
http://code.google.com/p/google-api-java-client/
你从哪里得到你正在使用的图书馆?
此处提供了有关API的文档 - 请注意,您需要使用新的API: