- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在开发一个应用引擎项目并使用 Google 数据存储存储我的数据。我想调试它,但我仍然有异常 java.lang.IllegalArgumentException: projectId must match the following pattern: ([a-z\d\-]{1,100}~)?([a-z\d][a-z\d\-\.]{0,99}:)?([a-z\d][a-z\d\-]{0,99})
我能够调试我的 Appengine 项目,我可以部署它并将数据正确地存储在 Google Datastore 中。
为了允许调试,我遵循了数据存储模拟器的说明:
https://cloud.google.com/datastore/docs/tools/datastore-emulator
我已经安装了 Google Cloud SDK,并使用我的项目 ID 的默认值正确启动它(我还尝试通过命令行设置我自己的项目 ID)。
这是我在 gcloud 中执行的命令:
gcloud beta emulators datastore start --project="my-project-name"
WARNING: Reusing existing data in [C:\gcloud\emulators\datastore]. Executing: cmd /c C:\google-cloud-sdk\platform\cloud-datastore-emulator\cloud_datastore_emulator.cmd start --host=localhost --port=8806 --store_on_disk=True --consistency=0.9 --allow_remote_shutdown C:\gcloud\emulators\datastore [datastore] nov 27, 2016 5:08:17 PM com.google.cloud.datastore.emulator.CloudDatastore$FakeDatastoreAction$7 apply [datastore] INFORMACI?N: Provided --allow_remote_shutdown to start command which is no longer necessary. [datastore] nov 27, 2016 5:08:17 PM com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub [datastore] INFORMACI?N: Local Datastore initialized: [datastore]
Type: High Replication [datastore] Storage: C:\gcloud\emulators\datastore\WEB-INF\appengine-generated\local_db.bin [datastore] nov 27, 2016 5:08:17 PM io.grpc.internal.ManagedChannelImpl [datastore] INFORMACI?N: [ManagedChannelImpl@5f71c76a] Created with target localhost:8806 [datastore] nov 27, 2016 5:08:17 PM com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub load [datastore] INFORMACI?N: The backing store, C:\gcloud\emulators\datastore\WEB-INF\appengine-generated\local_db.bin, does not exist. It will be created. [datastore] nov 27, 2016 5:08:17 PM io.gapi.emulators.netty.NettyUtil applyJava7LongHostnameWorkaround [datastore] INFORMACI?N: Unable to apply Java 7 long hostname workaround. [datastore] API endpoint: http://localhost:8806 [datastore] If you are using a library that supports the DATASTORE_EMULATOR_HOST environment variable, run: [datastore] [datastore] export DATASTORE_EMULATOR_HOST=localhost:8806 [datastore] [datastore] Dev App Server is now running. [datastore]
这是我尝试使用它时的堆栈跟踪:
java.lang.IllegalArgumentException: projectId must match the following pattern: ([a-z\d-]{1,100}~)?([a-z\d][a-z\d-.]{0,99}:)?([a-z\d][a-z\d-]{0,99}) at com.google.common.base.Preconditions.checkArgument(Preconditions.java:122) at com.google.cloud.datastore.Validator.validateDatabase(Validator.java:42) at com.google.cloud.datastore.BaseKey$Builder.(BaseKey.java:58) at com.google.cloud.datastore.KeyFactory.(KeyFactory.java:35) at com.google.cloud.datastore.DatastoreHelper.newKeyFactory(DatastoreHelper.java:59) at com.google.cloud.datastore.DatastoreImpl.newKeyFactory(DatastoreImpl.java:371) at com.myproject.api.CronServlet.saveToDataStore(CronServlet.java:187) at com.myproject.api.CronServlet.doGet(CronServlet.java:105) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:128) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:50) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366) at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349) at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:98) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:511) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:326) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
编辑:代码(我没有包括因为我认为问题不在代码中,因为我部署并且它工作得很好)。在“datastore.newKeyFactory()”中引发异常
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);
最佳答案
目前尚不清楚您是在寻找连接到数据存储模拟器(用于开发)的示例还是 Google Cloud Platform 上的真实数据存储。看起来您的主要目标是从 IDE 调试您的代码,您可以通过任何一种方式进行调试。
要连接到数据存储模拟器 - 请参阅以下帖子:
Google Datastore Emulator using Java (Not using GAE)
用于连接到 GCP 上的数据存储 -
如果您尚未运行 glcoud init
命令,请运行它并按照屏幕上的说明设置默认项目和身份验证凭据。然后你可以使用下面的代码访问真正的数据存储:
Datastore datastore = DatastoreOptions.getDefaultInstance().getService();
其他选项是使用 DatastoreOptions.Builder 在代码中设置项目 ID 和 Auth Credentials。您需要从 Google Cloud Console 获取/下载 JSON 凭证。
有关更多信息/示例代码,请参阅以下链接:
https://github.com/GoogleCloudPlatform/google-cloud-java#specifying-a-project-id
https://github.com/GoogleCloudPlatform/google-cloud-java#authentication
关于java - 调试谷歌数据存储 : IllegalArgumentException: projectId must match the following pattern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40831513/
这个问题在这里已经有了答案: Difference between / and /* in servlet mapping url pattern (5 个回答) 4年前关闭。 web.xml 中的/
Scala 具有支持模式匹配中析取的语言功能(“模式替代”): x match { case _: String | _: Int => case _ => } 但是,如果审查满足 P
解释我的问题: 类别:玩具 特质 1:说话像男性 特质2:说话像女性 我能否在运行时更改 Toy 的行为(特征),以便有时同一个对象说话像男性,有时同一个对象说话像女性? 我想在运行时改变说话行为。
我已经能够找到很好的资源,这些资源告诉我 Java API 中的 MouseAdapter 没有使用适配器模式。问题是:MouseAdapter 是否实现了某种模式? 我知道它的作用:它为 Mouse
我有兴趣了解有关模式识别的更多信息。我知道这是一个广泛的领域,所以我将列出一些我想学习处理的特定类型的问题: 在看似随机的字节集中查找模式。 识别图像中的已知形状(例如圆形和正方形)。 注意给定位置流
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
所以,问题很简单:在 awk 中,if (var ~/pattern/) 是否与 if (var ~ "pattern") 相同? 我已经对 csv 进行了一些基本测试,两者似乎都产生了相同的结果..
我的问题是 this 的 Scala (Java) 变体Python 上的查询。 特别是,我有一个字符串 val myStr = "Shall we meet at, let's say, 8:45
我最近一直在研究正则表达式并注意到了这一点。 Pattern pNoEmbed = Pattern.compile("[ a-z]+", Pattern.CASE_INSENSITIVE); Patt
在研究大型应用程序的 C++ 源代码时,我发现了这种模式(该示例的语法可能很粗略,但基本细节都在那里): class A : X friend B; B *parent; ...
有人可以举一个“中介者模式”在现实世界中有用的用例吗? 最佳答案 Mediator是一种添加第三方对象以控制一组(2 个或更多)对象之间交互的方法。 您能找到的最简单的示例是 Chat Room例如,
尝试编译以下代码片段时: type 'a frame = Empty | Frame of string * 'a * 'a frame let rec searchFrame f s = match
目标 我的目标是获得一个 servlet 过滤器来处理对主页的请求,然后再将它们转发到 index.jsp。 问题 我无法让过滤器接收来自“/”的请求。它的 URL 模式是 / 相反,对该模式的请求最
这个问题已经有答案了: Difference between / and /* in servlet mapping url pattern (5 个回答) 已关闭 6 年前。 我已经设置了一个具有此
第 6 章(代码重用模式)中有以下示例: // the parent constructor function Parent(name) { this.name = name || 'Adam
Pattern类中的pattern()方法和toString()方法有什么区别? 文档说: public String pattern() Returns the regular expression
我有脚本 here并且 ng-pattern 工作正常,因为 scope.subnet 仅在输入匹配模式后才显示在输出中。但是如果 ng-pattern 不匹配,ng-show 不会显示任何错误
我想知道为什么当提供相同的正则表达式和相同的字符串时,java regex pattern.matcher() 和 pattern.matches() 的结果会不同 String str = "hel
This SO answer引用“患有模式综合症的小男孩”。虽然我可以通过上下文推断出一些含义,但我并不完全理解。 “有模式综合症的小男孩”的良好定义是什么? 最佳答案 它只是意味着寻找将模式注入(i
我有以下微服务架构的用例。 我的问题是,在当前情况下,我有 3 个微服务和一个 APIGateway。 最后,网关必须在聚合(组合)来自 3 个服务的数据之前进行大量查询。因为这 3 个微服务只提供基
我是一名优秀的程序员,十分优秀!