使用Google App Engine本地数据存储区的IllegalStateException

问题描述 投票:1回答:2

所以我试图在本地运行带有App的Google Datastore引擎进行测试和调试。本地App引擎似乎独立工作,datastore模拟器也是如此。

但是一旦我为datastore模拟器设置环境变量,并重新启动本地App Engine,它就会因错误而崩溃,

Caused by: java.lang.IllegalStateException: Must use project ID as app ID if project ID is provided. 

我在下面附上了一个更完整的堆栈跟踪

从错误消息中,我怀疑我需要将项目ID更改为项目名称。所以我尝试用我可能的项目名称替换项目id的各种实例,不幸的是,这也没有用。

我正在运行的命令:

1. gcloud config set project PROJECT-ID
2. export ENDPOINTS_SERVICE_NAME=name.endpoints.PROJECT-ID.cloud.goog
3. gcloud beta emulators datastore start
4. $(gcloud beta emulators datastore env-init)
5. mvn appengine:run

我把堆栈跟踪放在pastebin https://pastebin.com/atcnYwrq

java google-app-engine runtime-error illegalstateexception
2个回答
8
投票

我偶然发现了解决这个问题的方法。

export DATASTORE_USE_PROJECT_ID_AS_APP_ID=true

0
投票

如果其他人遇到此错误,我没有修复原始错误,但如果您使用Remote API,它似乎在RemoteCheck为false时设置本地数据存储。

如果您正在使用Objectify,那么您将需要使用Remotely,设置CustomFactory并注册它,并确保您的web.xml中包含以下内容

<filter-mapping>
    <filter-name>ObjectifyFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>
<listener>
    <listener-class>com.packagename.OfyHelper</listener-class>
</listener>
© www.soinside.com 2019 - 2024. All rights reserved.