2

语言:-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)

4

2 回答 2

3

当您尝试从命令行运行时,您需要了解 Google App Engine 需要做大量工作来设置本地环境,并提供足够多的服务,甚至让 API 以您想要的方式工作。

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

于 2014-02-14T14:16:41.120 回答
0

它不适用于公共静态 void main()。它可以从一个 servlet 工作,这是我在遇到同样的错误时刚刚尝试过的。祝你好运。

于 2014-10-27T02:18:12.777 回答