【问题标题】:How can i set the environment variable GOOGLE_APPLICATION_CREDENTIALS?如何设置环境变量 GOOGLE_APPLICATION_CREDENTIALS?
【发布时间】:2018-04-25 10:18:43
【问题描述】:

我知道以前有人问过这类问题,我已经解决了这个问题,但仍然面临这个问题。我正在使用 this example 。但是当我运行我的代码时,我得到了以下异常

无法检测我们是否在 Google Compute Engine 上运行。 java.net.ConnectException:无法连接到 /169.254.169.254:80 在 com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:143) 在 com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112) 在 com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184) 在 com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126) 在 com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95) 在 com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281) 在 com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224) 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461) 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127) 在 com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:104) 在 com.google.api.client.http.HttpRequest.execute(HttpRequest.java:981) 在 com.google.auth.oauth2.ComputeEngineCredentials.runningOnComputeEngine(ComputeEngineCredentials.java:191) 在 com.google.auth.oauth2.DefaultCredentialsProvider.tryGetComputeCredentials(DefaultCredentialsProvider.java:270) 在 com.google.auth.oauth2.DefaultCredentialsProvider.getDefaultCredentialsUnsynchronized(DefaultCredentialsProvider.java:194) 在 com.google.auth.oauth2.DefaultCredentialsProvider.getDefaultCredentials(DefaultCredentialsProvider.java:112) 在 com.google.auth.oauth2.GoogleCredentials.getApplicationDefault(GoogleCredentials.java:127) 在 com.google.auth.oauth2.GoogleCredentials.getApplicationDefault(GoogleCredentials.java:100) 在 com.google.api.gax.core.GoogleCredentialsProvider.getCredentials(GoogleCredentialsProvider.java:53) 在 com.google.api.gax.rpc.ClientContext.create(ClientContext.java:134) 在 com.google.cloud.dialogflow.v2.stub.GrpcSessionsStub.create(GrpcSessionsStub.java:75) 在 com.google.cloud.dialogflow.v2.stub.SessionsStubSettings.createStub(SessionsStubSettings.java:100) 在 com.google.cloud.dialogflow.v2.SessionsClient.(SessionsClient.java:132) 在 com.google.cloud.dialogflow.v2.SessionsClient.create(SessionsClient.java:114) 在 com.google.cloud.dialogflow.v2.SessionsClient.create(SessionsClient.java:106) 在 com.example.lpt_0096.dialogflowv2.MainActivity$MyAsync.detectIntentStream(MainActivity.java:76) 在 com.example.lpt_0096.dialogflowv2.MainActivity$MyAsync.doInBackground(MainActivity.java:61) 在 android.os.AsyncTask$2.call(AsyncTask.java:333) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) 在 java.lang.Thread.run(Thread.java:764) W/System.err:java.io.IOException:应用程序默认凭据不可用。如果在 Google Compute Engine 中运行,它们就可用。否则,必须定义环境变量 GOOGLE_APPLICATION_CREDENTIALS 指向定义凭据的文件。有关更多信息,请参阅https://developers.google.com/accounts/docs/application-default-credentials。 W/System.err:在 com.google.auth.oauth2.DefaultCredentialsProvider.getDefaultCredentials(DefaultCredentialsProvider.java:119) W/System.err:在 com.google.auth.oauth2.GoogleCredentials.getApplicationDefault(GoogleCredentials.java:127) W/System.err:在 com.google.auth.oauth2.GoogleCredentials.getApplicationDefault(GoogleCredentials.java:100) W/System.err:在 com.google.api.gax.core.GoogleCredentialsProvider.getCredentials(GoogleCredentialsProvider.java:53) W/System.err:在 com.google.api.gax.rpc.ClientContext.create(ClientContext.java:134) W/System.err:在 com.google.cloud.dialogflow.v2.stub.GrpcSessionsStub.create(GrpcSessionsStub.java:75) W/System.err:在 com.google.cloud.dialogflow.v2.stub.SessionsStubSettings.createStub(SessionsStubSettings.java:100) W/System.err:在 com.google.cloud.dialogflow.v2.SessionsClient.(SessionsClient.java:132) W/System.err:在 com.google.cloud.dialogflow.v2.SessionsClient.create(SessionsClient.java:114) W/System.err:在 com.google.cloud.dialogflow.v2.SessionsClient.create(SessionsClient.java:106) W/System.err:在 com.example.lpt_0096.dialogflowv2.MainActivity$MyAsync.detectIntentStream(MainActivity.java:76) W/System.err:在 com.example.lpt_0096.dialogflowv2.MainActivity$MyAsync.doInBackground(MainActivity.java:61) W/System.err:在 android.os.AsyncTask$2.call(AsyncTask.java:333) W/System.err:在 java.util.concurrent.FutureTask.run(FutureTask.java:266) W/System.err:在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) W/System.err:在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) W/System.err:在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) W/System.err:在 java.lang.Thread.run(Thread.java:764)

我在哪里可以在android studio中设置环境变量,我是windows用户

【问题讨论】:

标签: android google-cloud-platform dialogflow-es


【解决方案1】:

来自错误

java.io.IOException:应用程序默认凭据不是 可用的。如果在 Google Compute Engine 中运行,它们就可用。 否则,环境变量 GOOGLE_APPLICATION_CREDENTIALS 必须定义指向定义凭据的文件

https://developers.google.com/accounts/docs/application-default-credentials 了解更多信息。

您可能需要在环境变量路径GOOGLE_APPLICATION_CREDENTIALS=path/to/your/service_accont_key_file.json 中添加它。并且应该从这里获取 json 文件 https://cloud.google.com/docs/authentication/getting-started 。另外,如果您不知道如何设置环境变量路径,您可以查看https://www.computerhope.com/issues/ch000549.htm

【讨论】:

  • 我已经按照你的建议做了,但它仍然抛出异常。我的问题仍然存在......我如何在android中实现这一点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-24
  • 1970-01-01
  • 2018-12-02
  • 2022-08-19
  • 2019-07-02
相关资源
最近更新 更多