我正在使用gmail API。当我打包我的应用程序时,我的client_secrets.json和凭证文件不在里面。我如何确保它们可供使用?
答案 0 :(得分:2)
如果您使用的是Maven或Gradle,则需要将它们放入/src/main/resources/client_secrets.json
。 (不要进入项目的根文件夹!)
然后他们在里面'罐子。
然后你可以加载传递给GoogleClientSecrets
,如下所示:
InputStream in = XXX.class.getResourceAsStream("/client_secrets.json");
GoogleClientSecrets clientSecrets =
GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
XXX
您应该用您的班级名称替换。谷歌正在快速启动中使用相同的功能。请参阅:https://developers.google.com/gmail/api/quickstart/java第3步。
关于您的评论的更新:
你放在/src/main/resources
内的所有东西都在" root"你的战争文件。这意味着它们位于类路径的根目录中。您可以通过类加载器(而不是FileInputStream )访问所有这些内容,如下所示:
XXX.class.getResourceAsStream("/folder/filename");
您提到的FileInputStream
通常仅用于访问war
您对InputStream in = new FileInputStream("src/main/resources/credentials/gmail/client_secret.json");
的建议仅在您的IDE中有效,因为文件夹src/main/resources
确实存在。如上所述,当您将其打包为war
时,src/main/resources
的内容会移至war
的根目录。