0

我正在开发一个 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 服务器调用失败;有关详细信息,请参阅服务器日志。

这些可能的原因是什么?

4

2 回答 2

1

该代码甚至无法编译,因为您的导入存在名称冲突(重复的 Freebase、JSON)。你甚至需要在开始之前解决这个问题。

据我所知,谷歌没有任何使用命名空间 com.google.tracker 的东西。如果这是您在这个问题中的代码,您应该将包名称更改为您控制的命名空间中的名称。

您正在使用的客户端库使用已弃用的 Freebase API。由于您正在进行新的开发,因此您应该使用新的 API。

如果您在修复所有基本内容后仍然遇到问题,请更新您的问题或发布新问题。

于 2012-02-18T16:35:10.223 回答
0

您可以使用此客户端库来使用 Freebase API

http://code.google.com/p/google-api-java-client/

你从哪里得到你正在使用的图书馆?

有关 API 的文档可在此处获得 - 请注意,您需要使用新的 API:

http://wiki.freebase.com/wiki/API

于 2012-02-17T18:49:10.197 回答