【问题标题】:Accessing files in the resource folder when the app is running on the server in a spring boot appspring boot 应用程序在服务器上运行时访问资源文件夹中的文件
【发布时间】:2020-06-21 14:14:35
【问题描述】:

我将 Firebase 身份验证添加到 Spring Boot 项目中。为了让我使用 firebase 资源,我必须添加一个 json 文件,其中包含用于初始化 firebase 的令牌。初始化代码如下所示。

try {


            InputStream serviceAccount =
                    PplusserverApplication.class.getResourceAsStream("/xxxxxx.json");
            FirebaseOptions options = new FirebaseOptions.Builder()
                    .setCredentials(GoogleCredentials.fromStream(serviceAccount))
                    .setDatabaseUrl("https://xxxxxxxxxxxxxxxxx")
                    .build();


            FirebaseApp.initializeApp(options);
            FirebaseApp.getInstance().getName();
            logger.info("Is Firebase Started :"+FirebaseApp.getInstance().getName());

        } catch (Exception e) {
            e.printStackTrace();
            logger.error("stack: "+e.toString());
        }

它在笔记本电脑和本地tomcat上运行良好。当我将它部署到服务器时,问题就来了。当我向它发出请求时,我收到此错误“名称为 [DEFAULT] 的 FirebaseApp 不存在。”。

我尝试过的:

  1. 我将 json 文件移至静态文件夹。

2)我添加了@EnableWebMvc 来添加资源文件夹并可以访问它。

  1. 我在构建项目时运行了 mvn generate resources。

执行所有这些操作仍然给我同样的错误“名称为 [DEFAULT] 的 FirebaseApp 不存在。”

我正在 aws ec2 上的 tomcat8 上部署一个战争文件

如何将 json 文件添加到战争中并可以访问它?或者你将如何解决这个问题。 提前致谢

【问题讨论】:

标签: java firebase spring-boot amazon-ec2


【解决方案1】:

它将帮助您从 Spring Boot 应用程序中的文件夹中读取:

  Resource resource = new ClassPathResource("classpath:XXXX.json");
  InputStream inputStream = resource.getInputStream();

也可以通过自动装配@Autowired ResourceLoader resourceLoader获取资源

Resource resource = 
resourceLoader.getResource("classpath:XXXX.json");
InputStream inputStream = resource.getInputStream();

【讨论】:

  • 谢谢。问题是没有访问该文件。问题是firebase没有在服务器上初始化。
猜你喜欢
  • 2018-05-28
  • 2014-06-04
  • 1970-01-01
  • 2021-03-19
  • 2017-10-03
  • 2015-07-17
  • 2014-11-21
  • 2019-08-06
  • 2016-01-19
相关资源
最近更新 更多