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 ビルド パスの 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;
 }
}

なにが問題ですか?

ありがとう。

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 パッケージも使用できません。gwt レイヤーには Java クラスのサブセットのみを使用できます。

GWT チュートリアルhttp://code.google.com/webtoolkit/doc/latest/tutorial/index.htmlを読むことをお勧めします。

于 2010-12-28T19:21:40.113 に答える