Java 调试Google数据存储:IllegalArgumentException:projectId必须匹配以下模式

Java 调试Google数据存储:IllegalArgumentException:projectId必须匹配以下模式,java,google-app-engine,debugging,google-cloud-datastore,datastore,Java,Google App Engine,Debugging,Google Cloud Datastore,Datastore,我正在开发一个appengine项目,并使用Google数据存储存储我的数据。我想调试它,但我仍然有异常java.lang.IllegalArgumentException:projectId必须匹配以下模式:([a-z\d\-]{1100}~)([a-z\d][a-z\d\-.]{0,99}:)([a-z\d][a-z\d\-]{0,99}) 我能够调试appengine项目,并且可以部署它并将数据正确地存储在Google数据存储中 为了允许调试,我遵循了数据存储模拟器的说明: 我已经安装了

我正在开发一个appengine项目,并使用Google数据存储存储我的数据。我想调试它,但我仍然有异常
java.lang.IllegalArgumentException:projectId必须匹配以下模式:([a-z\d\-]{1100}~)([a-z\d][a-z\d\-.]{0,99}:)([a-z\d][a-z\d\-]{0,99})

我能够调试appengine项目,并且可以部署它并将数据正确地存储在Google数据存储中

为了允许调试,我遵循了数据存储模拟器的说明:

我已经安装了GoogleCloudSDK,并使用我的项目id的默认值正确地启动它(我还尝试通过命令行设置我自己的项目id)

这是我在gcloud中执行的命令:

gcloud beta模拟器数据存储启动--project=“我的项目名称”

警告:重用[C:\gcloud\emulators\datastore]中的现有数据。 执行:cmd/c C:\google cloud sdk\platform\cloud datastore emulator\cloud\u datastore\u emulator.cmd start--host=localhost--port=8806--store_on_disk=True --一致性=0.9--允许远程关机C:\gcloud\emulators\datastore[数据存储]2016年11月27日下午5:08:17 com.google.cloud.datastore.emulator.CloudDatastore$FakeDatastoreAction$7 应用[datastore]INFORMACI?N:已提供--允许远程关闭 启动不再需要的命令。[数据存储]2016年11月27日 下午5:08:17 com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub [数据存储]信息?N:本地数据存储已初始化:[数据存储]
类型:高复制[数据存储]存储: C:\gcloud\emulators\datastore\WEB-INF\appengine generated\local\u db.bin [数据存储]2016年11月27日下午5:08:17 io.grpc.internal.ManagedChannel Impl[数据存储]信息: [ManagedChannelImpl@5f71c76a]使用目标localhost:8806创建 [数据存储]2016年11月27日下午5:08:17 com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub加载 [数据存储]信息:备份存储, C:\gcloud\emulators\datastore\WEB-INF\appengine generated\local\u db.bin, 不存在。它将被创建。[数据存储]2016年11月27日5:08:17 PM io.gapi.emulators.netty.NettyUtil applyjava7longhostname变通方法 [数据存储]INFORMACI?N:无法应用Java 7长主机名 变通办法。[数据存储]API端点: [数据存储]如果您使用的库支持 数据存储\仿真器\主机环境变量,运行:[数据存储] [datastore]导出datastore\u EMULATOR\u HOST=localhost:8806 [数据存储][数据存储]开发应用服务器现在正在运行。[数据存储]

这是我尝试使用它时的stacktrace:

java.lang.IllegalArgumentException:projectId必须与以下内容匹配 模式: ([a-z\d-]{1100}~)?([a-z\d][a-z\d-.]{0,99}:)?([a-z\d][a-z\d-]{0,99}) 在 com.google.common.base.premissions.checkArgument(premissions.java:122) 在 com.google.cloud.datastore.Validator.validateDatabase(Validator.java:42) 位于com.google.cloud.datastore.BaseKey$Builder。(BaseKey.java:58) 位于com.google.cloud.datastore.KeyFactory(KeyFactory.java:35) 在 com.google.cloud.datastore.DatastoreHelper.newKeyFactory(DatastoreHelper.java:59) 在 com.google.cloud.datastore.DatastoreImpl.newKeyFactory(DatastoreImpl.java:371) 在 com.myproject.api.CronServlet.saveToDataStore(CronServlet.java:187) 位于com.myproject.api.CronServlet.doGet(CronServlet.java:105) http.HttpServlet.service(HttpServlet.java:617)位于 http.HttpServlet.service(HttpServlet.java:717)位于 org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 在 com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 在 com.google.appengine.tools.development.ResponseWriterFilter.doFilter(responseWriterFilter.java:128) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 在 com.google.appengine.tools.development.headerficationfilter.doFilter(headerficationfilter.java:34) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 在 com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 在 com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:50) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 在 com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 在 com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366) 在 com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349) 在 com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116) 在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 在 org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 在 org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 在 org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 在 org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 在 org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 在 com.google.appengine.tools.development.devappengineewebappcontext.handle(DevAppE
Datastore datastore = DatastoreOptions.getDefaultInstance().getService();
Key taskKey = datastore.newKeyFactory().setKind(ENTITY_TYPE_MEDIDAS).
    newKey(Calendar.getInstance(TimeZone.getTimeZone("CET")).getTimeInMillis());
Entity.Builder task = Entity.newBuilder(taskKey)
        .set(PROPERTY_COMPUESTO, DATA_COMPUESTO)
        .set(PROPERTY_AVISO,DATA_AVISO);
Entity entity = task.build();
datastore.put(entity);
Datastore datastore = DatastoreOptions.getDefaultInstance().getService();
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();