我尝试编译使用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构建路径的Libraries部分(我正在使用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;
}
}
有什么问题?
感谢。
答案 0 :(得分:3)
Morphia GWT支持仍在建设中。
请参阅此问题:http://code.google.com/p/morphia/issues/detail?id=103
但似乎你还有其他问题。您无法使用共享代码连接到服务器,只能连接到服务器代码。您需要阅读并理解GWT项目中的代码。
morphia模块唯一支持的功能是能够将实体发送到GWT客户端代码。您实际上无法使用它或MongoDB驱动程序代码在客户端执行服务器操作; GWT永远不会允许这样做。
答案 1 :(得分:1)
GWT需要MongoDb和Morphia类的源代码..但是,您不应该也不能将这些类用于应用程序的gwt层。另外你不能使用java.net包用于gwt层。您只能为gwt层使用java类的子集。
我建议你阅读GWT教程http://code.google.com/webtoolkit/doc/latest/tutorial/index.html。