Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Boot-如何war包凭据文件?_Java_Spring_Spring Boot_Gmail Api - Fatal编程技术网

Java Spring Boot-如何war包凭据文件?

Java Spring Boot-如何war包凭据文件?,java,spring,spring-boot,gmail-api,Java,Spring,Spring Boot,Gmail Api,我正在使用gmail API。当我war打包我的应用程序时,我的client_secrets.json和凭证文件不在其中。如何确保它们可供使用?如果您使用的是Maven或Gradle,则需要将它们放入/src/main/resources/client\u secrets.json中。(不在项目的根文件夹中!) 然后它们就在罐子里了 然后,您可以像下面这样将其加载到GoogleClientSecrets: InputStream in = XXX.class.getResourceAsStrea

我正在使用gmail API。当我war打包我的应用程序时,我的client_secrets.json和凭证文件不在其中。如何确保它们可供使用?

如果您使用的是Maven或Gradle,则需要将它们放入
/src/main/resources/client\u secrets.json
中。(不在项目的根文件夹中!)

然后它们就在罐子里了

然后,您可以像下面这样将其加载到
GoogleClientSecrets

InputStream in = XXX.class.getResourceAsStream("/client_secrets.json");
GoogleClientSecrets clientSecrets =
        GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
XXX.class.getResourceAsStream("/folder/filename");
XXX
您应该用您的类名替换。谷歌在他们的快速入门中也使用了同样的方法。见:第3步

更新您的评论:

放置在
/src/main/resources
中的所有内容都位于war文件的“根”中。这意味着它们位于类路径的根中。您可以通过类加载器(而不是FileInputStream)访问所有这些内容,如下所示:

InputStream in = XXX.class.getResourceAsStream("/client_secrets.json");
GoogleClientSecrets clientSecrets =
        GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
XXX.class.getResourceAsStream("/folder/filename");
您提到的
FileInputStream
通常仅用于访问
war


您对InputStream in=newfileinputstream(“src/main/resources/credentials/gmail/client_secret.json”)的建议只在IDE中工作,因为那里确实存在文件夹
src/main/resources
。当您将其打包为
war
时,正如我前面所述,
src/main/resources
的内容将被移动到
war

的根目录中,谢谢!资源并不打包静态文件。如果我想在战争中部署怎么办?“src/main/resources/credentials/gmail/client_secret.json”仍然有效吗?是的,在
war
中-包模式
/src/main/resources
也被考虑。否则,您的所有日志配置和类似的内容都将在war文件中。这是你问的吗?不完全是…我现在如何引用这些资源?InputStream in=newfileinputstream(“src/main/resources/credentials/gmail/client_secret.json”);不起作用了。我更新了答案,你能检查一下这是否对你有意义吗?有意义,在我再次尝试部署之前替换东西…我该如何更改数据\u STORE\u DIR=new File(“src/main/resources/credentials/gmail”);到?不要将它们打包到可执行文件中;改为在运行时提供它们。@chrylis您的意思是在war文件之外托管client_secrets.json吗?或者不使用json并从环境变量或属性构建凭据对象。Spring Boot配置属性使这很简单。@chrylis如果我在ubuntu上从tomcat运行war,我可以将它指向哪个目录?(我不确定允许tomcat用户访问哪些目录…)您应该能够在tomcat配置中设置应用程序的属性。