【发布时间】: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用户
【问题讨论】:
-
GOOGLE_APPLICATION_CREDENTIALS=path/to/your/service_accont_key_file.json你可能需要在环境变量path中添加这个。应该从这里获取json文件 cloud.google.com/docs/authentication/getting-started 。另外,如果您不知道如何设置路径,请检查此computerhope.com/issues/ch000549.htm。 -
@sunilsunny 你能把这个作为答案发布吗?供社区将来参考。
-
@Mangu 为什么不 :) 添加为答案。
标签: android google-cloud-platform dialogflow-es