语言: - 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)
答案 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工作,这是我在遇到同样的错误时刚刚尝试过的。 祝你好运。