GoogleCredential客户端API无法在Web应用程序中找到文件路径

时间:2014-09-19 07:16:36

标签: java file google-calendar-api

我正在使用Google日历客户端API并尝试通过Google进行身份验证  以下代码在独立应用程序中工作,而不在Web应用程序环境中工作  在网络应用的情况下,
 setServiceAccountPrivateKeyFromP12File(File)方法无法找到我提供的路径,我尝试了很多堆栈交换用户给出的答案。
 但对我来说没有用。每次它只显示一条消息,文件路径(没有这样的文件或路径)。   不知道出了什么问题。请帮我找到解决这个问题的方法。

GoogleCredential credential =   new GoogleCredential.Builder().setTransport(httpTransport)  
.setJsonFactory(JSON_FACTORY) 
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(Collections.singleton(CalendarScopes.CALENDAR))  
.setServiceAccountPrivateKeyFromP12File(new File(CLIENT_SECRET)).build();  

这里是private static final String CLIENT_SECRET="credentials/Test.p12";
我尝试使用ClassLoadersURL,但没有用。总是抛出FileNotFoundException 我的项目是 maven 项目,代码位于相关jar文件中。

1 个答案:

答案 0 :(得分:0)

这不是Google Client API的问题。 在网络应用程序中,我们应该提供绝对路径来创建文件实例。
通常,Web应用程序提供相对路径,因此无法在Java中使用此相对路径创建文件实例。 因为java.io.File不了解相对路径。它只知道操作系统特定的绝对路径来创建文件的实例 为此,String absoluteDiskPath = servletContext.getRealPath("/credentials/secret.p12");
这是按预期工作的。 感谢您在评论中提供帮助。