1

私は GWT プロジェクトを持っており、別のプロジェクトのいくつかのクラスをサーバー側で使用したいと考えています。

MyServerProject
    com.me.myserverproject.server.Horse

SomeSupportProject
    com.me.somesupportproject.server.Animal

MyServerProject Horse.java は次のようになります。

class Horse extends Animal {
}

Eclipse では、SomeSupportProject プロジェクトを参照する MyServerProject があります。すべてが正常にコンパイルされ、GWT コンパイルも正常に実行され、エラーは発生しません。

MyServerProject をローカル インスタンスにデプロイすると、すぐに "Animal.java" で NoClassDefFoundError エラーがスローされます。

java.lang.NoClassDefFoundError: com/me/somesupportproject/server/Animal
  at java.lang.ClassLoader.defineClass1(Native Method)

Eclipse プロジェクトのプロパティで SomeSupportProject をエクスポート済みとしてマークしました。しかし、デプロイ時に Animal.java のクラス ファイルがエクスポートされないようです。それを機能させるために、ここで何か特別なことをする必要がありますか?

これはかなり基本的なものなので、本当に明白な何かが欠けているに違いありません。クライアント側の Java ファイルが問題なく参照されていますが、これはよりトリッキーなケースだと思います。しかし、これらはすべてサーバー側のクラスであり、より単純になると考えられていました。

ありがとう

------- 更新: プロジェクトのセットアップ ---------------

私の環境に関するいくつかのメモ:

Eclipse を使用すると、2 つのプロジェクトが並んでいます。Ant や Maven は使用していません。私はEclipseを自動的にビルドするように設定しているので、コンパイルエラーは発生しません。実際にデプロイ用にコンパイルするには、「MyServerProject」を右クリックして、Google -> GWT Compile を選択してみました。出力を「すべて」に設定しました。コンパイルエラーは発生しません。出力には、警告は記載されていません。

GWT コンパイルが完了したら、プロジェクトをもう一度右クリックし、[Run As] -> [Web Application] を選択します。これは、SomeSupportProject プロジェクトで見つかったクラスに対して java.lang.NoClassDefFoundError をスローするものです。

役立つ詳細があれば、私に知らせてください。

--------- 最終更新: 解決済み -----

これにさらに取り組んだ後、プロジェクト参照を追加して、デプロイされた最上位プロジェクトでサーバー側クラスを取得することができないようです。代わりに、SomeSupportProject の「src」フォルダーにリンクしました。これにより、通常どおりコンパイルできますが、プロジェクトをデプロイすると、すべてのクラスが問題なく検出されます。

したがって、これは実際にはアプリ エンジンの問題であり、代わりにその下にタグ付けする必要がありました。

ありがとう!

4

1 に答える 1

0

これにもう少し取り組んだ後、プロジェクト参照を追加して、デプロイされたトップレベルプロジェクトでサーバー側クラスを見つけることができないようです。代わりに、SomeSupportProjectの「src」フォルダーにリンクしました。これにより、通常どおりコンパイルできますが、プロジェクトをデプロイすると、すべてのクラスが問題なく検出されます。

したがって、これは実際にはアプリエンジンの問題であり、代わりにその下にタグを付ける必要がありました。

ありがとう!

于 2012-11-26T03:09:40.343 に答える