1

我尝试编译使用 MongoDB 和 Morphia 的 GWT 应用程序,但出现异常:

*[ERROR] - Line 12: No source code is available for type com.google.code.morphia.Morphia; did you forget to inherit a required module?
[ERROR] - Line 13: No source code is available for type com.mongodb.DB; did you forget to inherit a required module?
[ERROR] - Line 15: No source code is available for type java.net.UnknownHostException; did you forget to inherit a required module?
[ERROR] - Line 15: No source code is available for type com.mongodb.MongoException; did you forget to inherit a required module?
[ERROR] - Line 17: No source code is available for type com.mongodb.Mongo; did you forget to inherit a required module?
[ERROR] - Line 27: No source code is available for type com.mongodb.DBCollection; did you forget to inherit a required module?*

Morphia 和 MongoDB jar 被插入到 Java 构建路径的库部分(我使用的是 Eclipse)。我还附上了 MongoDB 源代码。

当我不使用 Morphia 时,一切正常。

这是我的课程代码:

package com.planner.shared;

import java.net.UnknownHostException;
import java.util.ArrayList;

import com.google.code.morphia.Morphia;
import com.mongodb.*;
import com.planner.shared.Project;
import com.planner.shared.ClassWrapper;

public class ProjectWrapper extends Base implements ClassWrapper {
 Morphia morphia;
 DB db;

 public ProjectWrapper() throws UnknownHostException, MongoException {
  super();
  Mongo m = new Mongo("127.0.0.1", 27017);
  db = m.getDB("planner");
  morphia = new Morphia();
  morphia.map(Project.class);
 }

 public ArrayList<Project> getProjects() {

  ArrayList<Project> projects = new ArrayList<Project>();
  //Get projects collection
  DBCollection projectsColl = db.getCollection("projects");
  //Get all projects from collection
  DBCursor cur = projectsColl.find();
  //Save all project to arrayList
  while(cur.hasNext()) {
   DBObject obj = cur.next();
   projects.add(morphia.fromDBObject(Project.class, obj));
  }
  return projects;
 }
}

怎么了?

谢谢。

4

2 回答 2

3

Morphia GWT 支持仍在建设中。

看到这个问题:http ://code.google.com/p/morphia/issues/detail?id=103

但似乎您还有其他问题。您无法连接到共享代码中的服务器,只能连接到服务器代码。您需要阅读并理解 GWT 项目中的哪些代码。

morphia 模块唯一支持的是将实体向下发送到 GWT 客户端代码的能力。您实际上不能使用它或 MongoDB 驱动程序代码在客户端执行服务器操作;GWT 绝不允许这样做。

于 2010-12-29T16:11:10.277 回答
1

GWT 需要 MongoDb 和 Morphia 类的源代码。但是,您不应该也不可以将这些类用于应用程序的 gwt 层。你也不能使用 gwt 层的 java.net 包。您只能将 Java 类的子集用于 gwt 层。

我建议您阅读 GWT 教程http://code.google.com/webtoolkit/doc/latest/tutorial/index.html

于 2010-12-28T19:21:40.113 回答