I am attempting to use the [gcloud][1] library. 

 (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)

The above clojure code is translated from the [following code snippet][1] (ellided, click on "Run elsewhere").

 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();

When I call this code from the Clojure REPL, I get the following error.

 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
 Compiler.java: 6890 clojure.lang.Compiler/eval
 core.clj: 3105 clojure.core/eval
 core.clj: 3101 clojure.core/eval
 main.clj: 240 clojure.main/repl/read-eval-print/fn
 main.clj: 240 clojure.main/repl/read-eval-print
 main.clj: 258 clojure.main/repl/fn
 main.clj: 258 clojure.main/repl
 main.clj: 174 clojure.main/repl
 RestFn.java: 1523 clojure.lang.RestFn/invoke
 interruptible_eval.clj: 87 clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn
 AFn.java: 152 clojure.lang.AFn/applyToHelper
 AFn.java: 144 clojure.lang.AFn/applyTo
 core.clj: 646 clojure.core/apply
 core.clj: 1881 clojure.core/with-bindings*
 core.clj: 1881 clojure.core/with-bindings*
 RestFn.java: 425 clojure.lang.RestFn/invoke
 interruptible_eval.clj: 85 clojure.tools.nrepl.middleware.interruptible-eval/evaluate
 interruptible_eval.clj: 55 clojure.tools.nrepl.middleware.interruptible-eval/evaluate
 interruptible_eval.clj: 222 clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
 interruptible_eval.clj: 190 clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn
 AFn.java: 22 clojure.lang.AFn/run
 ThreadPoolExecutor.java: 1142 java.util.concurrent.ThreadPoolExecutor/runWorker
 ThreadPoolExecutor.java: 617 java.util.concurrent.ThreadPoolExecutor$Worker/run
 Thread.java: 745 java.lang.Thread/run


 [1]: http://googlecloudplatform.github.io/gcloud-java/0.2.3/index.html
 [2]: https://github.com/GoogleCloudPlatform/gcloud-java/blob/master/gcloud-java-datastore/src/main/java/com/google/cloud/datastore/DatastoreOptions.java

The `com.google.cloud.datastore.DatastoreOptions` code [can be found here][2].

Ugh. Not clear why the above code works in Java but not in Clojure. Any help getting this to work is appreciated.