0

GAE-JAVA-SDK-1.5.5から1.6.0および1.6.1に更新した後、アプリが正しく機能しなくなります。RPCサービスでエラーが発生し始めました。

Exception while dispatching incoming RPC call com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract void com.skip.school.client.service.AdminService.addStudent(com.skip.school.shared.Student)' threw an unexpected exception: java.lang.NoClassDefFoundError: Could not initialize class com.skip.school.server.PmfSingleton

Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.skip.school.server.PmfSingleton

ログ全体はここpastebinにあります。

ユーザーが最初のrpc呼び出しを開始したときに初期化する必要があるシングルトンがあります。私が使用するシングルトンは正しいはずです。スタッカーオーバーフローやWeb上のあらゆる場所に多くの例があります。

public final class PmfSingleton {
    private final static PersistenceManagerFactory pmfInstance = JDOHelper.getPersistenceManagerFactory("transactions-optional");

    private PmfSingleton() { }

    public static PersistenceManagerFactory get() {
    return pmfInstance;    
    }
}

私はすべてのサーバー実装でそのクラスをそのように呼んでいます。

PersistenceManager pm = PmfSingleton.get().getPersistenceManager();

これはsdk1.5.5以下では機能しますが、sdk 1.6.0以降では機能しません。sdk1.6.0以降を使用する場合、何を変更すればよいか、誰かが間違っていることを知っていますか?

4

2 に答える 2

1

この問題は古いバージョンの datanucelus jar に関連していることをどこかで読みました。eclipse プラグインから入手できる最新バージョン v1.6.1 に更新し、古い jar への古い参照をすべて削除して修正し、次の 3 つだけを残しました。

  • datanucleus-appengine-1.0.10.final.jar
  • datanucleus-core-1.1.5.jar
  • datanucleus-jpa-1.1.5.jar

それがうまくいくことを願っています!

于 2012-01-19T20:57:29.220 に答える
0

AppEngine SDK の新しいバージョンにアップグレードした後、同じ問題が発生しました。問題は、古いバージョンの appengine-api-1.0-sdk jar がデプロイ フォルダーにぶら下がっていたことです。

アプリケーションのフォルダを見て、 のwar\WEB-INF\lib2 つの異なるバージョンがあるかどうかを確認してくださいappengine-api-1.0-sdk-1.x.y.jarappengine-api-1.0-sdk-1.5.xファイルを削除することで解決しました。

于 2012-06-15T11:41:20.360 に答える