- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 gcloud图书馆。
(ns firengine.state
(:import
[com.google.cloud AuthCredentials]
[com.google.cloud.datastore DatastoreOptions]))
(-> (DatastoreOptions/builder)
(.projectId "<project_id>")
(.authCredentials
(AuthCredentials/createForJson
(clojure.java.io/input-stream service-account-path)))
.build)
上面的clojure代码翻译自following code snippet (省略,单击“在其他地方运行”)。
import com.google.cloud.AuthCredentials;
import com.google.cloud.datastore.DatastoreOptions;
DatastoreOptions options = DatastoreOptions.builder()
.projectId(PROJECT_ID)
.authCredentials(AuthCredentials.createForJson(
new FileInputStream(PATH_TO_JSON_KEY))).build();
当我从 Clojure REPL 调用此代码时,出现以下错误。
Unhandled java.lang.IllegalArgumentException
Can't call public method of non-public class: public
com.google.cloud.ServiceOptions$Builder
com.google.cloud.ServiceOptions$Builder.projectId(java.lang.String)
Reflector.java: 88 clojure.lang.Reflector/invokeMatchingMethod
Reflector.java: 28 clojure.lang.Reflector/invokeInstanceMethod
boot.user4590132375374459695.clj: 168 firengine.state/eval17529
boot.user4590132375374459695.clj: 167 firengine.state/eval17529
Compiler.java: 6927 clojure.lang.Compiler/eval
... elided ...
com.google.cloud.datastore.DatastoreOptions
代码 can be found here .
2016 年 6 月 29 日更新:根据Schlomi根据下面的建议,我想也许如果我 AOT 围绕 DatastoreOptions
编译了自己的包装器,它就会起作用。
(ns firengine.datastore
(:import
[com.google.cloud AuthCredentials]
[com.google.cloud.datastore Datastore DatastoreOptions Entity Key KeyFactory])
(:gen-class
:state state
:init init
:constructors {[String String] []}))
(defn -init
[^String project-id ^String service-account-path]
(let [service-account (clojure.java.io/input-stream service-account-path)
credentials (AuthCredentials/createForJson service-account)
dsoptions (-> (DatastoreOptions/builder)
(.projectId project-id)
(.authCredentials credentials)
.build)]
[[] {:project-id project-id
:service-account-path service-account-path
:datastore-options dsoptions}]))
我修改了我的启动开发
任务以包含以下内容:
(deftask development
"Launch Immediate Feedback Development Environment"
[]
(comp
(aot :namespace '#{firengine.datastore})
(repl :port 6800)
(reload)
(watch)
(cljs)
(target :dir #{"target"})))
我尝试像这样构造对象:
(def service-account-path (System/getenv "FIRENGINE_SERVICE_ACCOUNT_PATH"))
(def project-id (System/getenv "PROJECT_ID"))
(def datastore-options (firengine.datastore. project-id service-account-path))
不幸的是,我仍然遇到同样的错误?
clojure.lang.Compiler$CompilerException: java.lang.reflect.InvocationTargetException, compiling:(state.clj:15:1)
java.lang.reflect.InvocationTargetException:
java.lang.IllegalArgumentException: Can't call public method of non-public class: public com.google.cloud.ServiceOptions$Builder com.google.cloud.ServiceOptions$Builder.projectId(java.lang.String)
我真的没有编译firengine.datastore
吗?
最佳答案
是的....这个问题。你可能不会相信,但它实际上是一个 open bug in the jdk来自...等等...1999!
您可以在clojure jira中阅读更多内容。以及 google groups .
您可能必须制作自己的 java 包装器以避免这种情况,或者 ask the library author考虑到这个古老的已知 java bug。
如果您不想编写自己的 java 包装器,并且作者坚持认为“这是最好的设计,就像有史以来!”,那么您始终可以通过使用 (.setAccessible 设置方法可访问性来强制它方法 true)
和一些更多的自定义反射代码..
祝你好运!
关于clojure - 无法调用非公共(public)类的公共(public)方法: public (Google gcloud library),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38059977/
我指的是这个 URL https://cloud.google.com/speech/docs/getting-started开始使用谷歌语音 API。正如网站所建议的那样,我遵循了以下步骤 创建或选
只需输入 gcloud寻求帮助需要 5 秒。 $ gcloud ... gcloud 0.30s user 0.13s system 7% cpu 5.508 total $ gcloud vers
要查看所有 gcloud 项目,请使用命令 gcloud projects list .要切换到特定项目,请使用 gcloud config set project PROJECT_ID . 但是当您
如何更新 gcloud components在shell脚本中以编程方式? 调用 gcloud components update需要用户输入,例如: $ gcloud components upda
如果我转到谷歌云控制台中的“IAM & admin”并选择左侧的“IAM”选项卡,我会看到一个用户列表(用户名@mydomain)。 如何使用 gcloud 列出这些用户?我如何查看用户通过 gclo
我想编写一个 shell 脚本,它基本上完成了 gcloud 的所有安装步骤,如以下概述:https://cloud.google.com/sdk/?hl=en 但是,当您运行 install.sh
我正在使用 gcloud beta logging read 来读取一些日志,并使用 --format 选项来格式化为 csv: --format="csv(timestamp,jsonPayload
我们的项目正在使用 dataproc,我已经检查了主和工作计算引擎中指示的服务帐户,它对我的存储桶存储具有所需的权限。尽管如此,在日志查看器中,我看到了以下内容: (gsutil) Failed
Google API 客户端通常会识别 GOOGLE_APPLICATION_CREDENTIALS环境变量。如果找到,它应该指向带有服务帐户或用户凭据的 JSON 文件。 可以从 GCP Web 控
当我运行一个简单的命令时,大约需要 10 秒才能完成, λ time gcloud version Google Cloud SDK 293.0.0 beta 2019.05.17 bq 2.0.57
我正在使用 remote builder 运行云构建,能够将工作区中的所有文件复制到我自己的虚拟机,但无法复制隐藏文件 用于复制文件的命令 gcloud compute scp --compress
我在脚本中使用命令gcloud compute instances list,但担心确切的输出格式不是静态的。我该怎么办? 最佳答案 您应该使用大多数--format命令可用的gcloud标志。 例如
我有谷歌云任务 API 的问题。我需要创建具有很远计划时间的任务。最长计划时间为 30 天。是否有可能增加该限制或绕过某些问题? 最佳答案 如果我们查看云任务的配额,我们会看到任务的默认最长调度时间为
如果我发出 gcloud dataproc Clusters list 则会列出 0 个集群: $ gcloud dataproc clusters list Listed 0 items. 但是,如
我在脚本中使用 gcloud auth activate-service-account 来激活服务帐户。它输出 Activated service account credentials for:
gcloud 中的功能和选项有时会被弃用/删除。如果 CI 依赖它并且重构不是一个选项,同时我们需要使用后续版本中出现的新功能,我们可以在同一台计算机上安装多个版本的 gcloud 并同时使用吗? 最
我在脚本中使用 gcloud auth activate-service-account 来激活服务帐户。它输出 Activated service account credentials for:
通常我对 gcloud 命令没有任何问题。作为一个只在更新我的网站时使用的人,我的曝光是通过一个命令: gcloud app deploy 当出现标题中显示的错误时,建议我运行“gcloud info
在 linux 中,我使用的是 Google gcloud。我注意到,当我使用以下命令时,并非总是将新文件或修改过的文件上传到 Google Cloud Storage: gcloud 应用部署 我得
我们正在使用 Jenkins 构建数据并将数据推送到 Google Cloud Storage。 我们有一台构建机器;和多个不同的 Google 项目(测试;生产) 如果 'jenkins' 用户在
我是一名优秀的程序员,十分优秀!