线程" main"中的例外情况java.lang.NullPointerException:没有为此线程getCurrentAppId注册API环境

时间:2014-02-14 12:25:22

标签: google-app-engine google-cloud-datastore gae-eclipse-plugin

语言: - Java 1.7
环境: - Eclipse IDE Kepler

要求: - 关于从java应用程序获取数据。我在GAE中创建了一个工作正常的Web应用程序。现在我希望我的应用程序代码应该从main运行并检索存储在Data Store中的日期。需要从核心java应用程序中获取数据。

import java.util.List; 
import com.google.appengine.api.datastore.Entity; 
import com.google.appengine.api.datastore.PreparedQuery; 
import com.google.appengine.api.datastore.Query; 
import com.google.appengine.api.datastore.Query.FilterOperator; 
import com.google.appengine.api.datastore.DatastoreService; 
import com.google.appengine.api.datastore.DatastoreServiceFactory; 
import com.google.appengine.api.datastore.FetchOptions; 

public static void main(String[] args)
    {
        DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
        Query query = new Query("SMS").addSort("Date", Query.SortDirection.DESCENDING);
        List<Entity> customers =  datastore.prepare(query).asList(FetchOptions.Builder.withLimit(50));

        for(Entity e : customers){

            System.out.println("Service: - " + e.getProperty("Service") );
            System.out.println("UserName: - " + e.getProperty("UserName") );
            System.out.println("QueryString: - " + e.getProperty("QueryString") );
            System.out.println("EmailId: - " + e.getProperty("EmailId") );
            System.out.println("MobileHashFormat: - " + e.getProperty("MobileHashFormat") );
            System.out.println("Date: - " + e.getProperty("Date") );
            System.out.println("Status: - " + e.getProperty("Status") );




            }
        }

例外: -

  

线程“main”中的异常java.lang.NullPointerException:没有为此线程注册API环境。     在com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppId(DatastoreApiHelper.java:86)     在com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppIdNamespace(DatastoreApiHelper.java:102)     在com.google.appengine.api.datastore.Query。(Query.java:215)     在com.google.appengine.api.datastore.Query。(Query.java:144)     在serive.TestGAEFile.main(TestGAEFile.java:17)

2 个答案:

答案 0 :(得分:3)

当您尝试从命令行运行时,您需要了解Google App Engine需要做很多工作才能使用足够多的服务来设置本地环境,甚至让API以这样的方式工作你要。

为了便于以本地方式进行测试,您需要阅读本地单元测试功能。查看https://developers.google.com/appengine/docs/java/tools/localunittesting?csw=1,您将需要其他JAR并使用LocalTesting Helper类为您设置环境。

答案 1 :(得分:0)

它不能从public static void main()工作。 它将从一个servlet工作,这是我在遇到同样的错误时刚刚尝试过的。 祝你好运。