0

Google Appengineのアプリが次のようなNullPointerExceptionをスローするという苛立たしい問題があります:

java.lang.NullPointerException
    at com.google.appengine.api.users.User.equals(User.java:143)

私のコードは次のようになります:

if (excludeUser.equals(someEntity.getProperty("user")))

エンティティのuserプロパティは、以前にデータストアに保存されていた別のUserオブジェクトでした。コードを次のように変更しても、例外は発生しません。

if (excludeUser.equals(null))

それで、User.equalsの内部ロジックが問題を引き起こしているのか、それともユーザーオブジェクトをデータストアに保存するときに他のトリッキーなことなのかと思います。

さらに、ロジックは開発環境でうまく機能します。この問題はGAEでのみ発生します。

フェデレーションログインではなく、GoogleアカウントAPIを使用しています。両方試してみました。同じ結果。どんな手がかりもありがたいです、ありがとう。

4

3 に答える 3

0

オブジェクトを確認してくださいsomeEntity。エラーが表示されているため、null オブジェクトである可能性があります。コードをステップ実行して、そのオブジェクトが null でないかどうかを確認することをお勧めします。

于 2012-10-09T03:13:41.517 に答える
0

これは User.equals() のバグです。

federatedIdentity.equals ここへの呼び出しは反転する必要があります。

行はreturn federatedIdentity.equals(user.federatedIdentity).

これを Google に報告しました。

于 2014-03-31T09:21:09.550 に答える
0

UserService.getUser() の特殊なケースであることが判明しました。次の内容で、null 以外のユーザーを返す理由がわかりません。

authDomain:https://www.google.com/accounts/o8/ud, 
email:, 
federatedId:https://www.google.com/accounts/o8/id?id=....., 
nickname:, 
userId:

このようなオブジェクトで、他の通常のユーザー オブジェクトを使用して .equals メソッドを呼び出すと、NullPointerException が発生します。これは Federated Login の変人だと思いますか?

于 2012-10-10T03:02:06.923 に答える