2

語言: - Java的1.7
環境: - Eclipse IDE的開普勒異常線程 「main」 顯示java.lang.NullPointerException:沒有API環境下注冊該線程getCurrentAppId

要求: - 它是關於從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) at com.google.appengine.api.datastore.Query。(Query.java:144) at serive.TestGAEFile.main(TestGAEFile.java:17)

回答

3

當您嘗試從命令行運行某些東西時,您需要了解Google App Engine需要做大量工作才能使用足夠的服務設置本地環境,甚至讓API工作你想要的方式。

爲了便於以這種本地方式進行測試,您需要閱讀本地單元測試功能。查看https://developers.google.com/appengine/docs/java/tools/localunittesting?csw=1,您將需要額外的JAR並使用LocalTesting Helper類爲您設置環境。

+0

它不適合我,因爲我需要從GAE中獲取實體商店數據。並從Java應用程序而不是Java Web應用程序。請協助 –

+0

我不確定您的具體要求是什麼......但如果您打算從任何應用程序訪問GAE App中的數據,我建議您編寫一個Web服務,以便您訪問各種信息可能想從GAE應用程序中退出。 – Romin

0

它不能從公共靜態void main()中工作。 它會從一個servlet工作,這是我剛剛嘗試,當我得到這個相同的錯誤。 祝你好運。

相關問題