我需要加载密钥文件以在我的服务器上创建GoogleCredential
实例。
我使用
WEB-INF/resources
目录中的资源的URL
url = servletContext.getResource(RESOURCES_FOLDER + "/" + filePath);
返回:
"jndi:/localhost/<MY_APP>/WEB-INF/resources/<MY_FILE>"
问题是GoogleCredential.setServiceAccountPrivateKeyFromP12File
需要File对象作为参数。
使用
创建File
时
f = new File(url.getFile());
f正在创建,但路径错误。
f.getAbsolutePath() = D:\localhost\<MY_APP>\WEB-INF\resources\secrets.p12
如何在Web服务器上下文中将URL转换为File?或者有一种更简单的方法来创建
GoogleCredential
实例
答案 0 :(得分:1)
试试这个 - 使用this.getClass()
而不是servletContext:
new java.io.File(this.getClass().getResource(RESOURCES_FOLDER + "/" + filePath).toURI());
更新:
实际上,我会查看您用于获取资源的网址。只要您使用.getResource
,默认网址就会指向/src/main/resources
目录。您传递到.getResources
方法的网址应该是该点的任何文件夹结构。
例如,如果我的文件夹结构是:
-src
-main
-resources
-googlecredentials.properties
您需要传递的所有内容是:this.getClass().getResource("googlecredentials.properties");
如果我的文件夹结构是:
-src
-main
-resources
-google
-googlecredentials.properties
我需要传递:this.getClass().getResource("google/googlecredentials.properties");
您永远不希望在资源网址前加/
作为前缀。那意味着你要从硬盘的根目录(绝对路径)看。您需要资源的相对路径。