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.