Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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-从jar内部访问firebase admin sdk凭据json文件_Java_Spring_Firebase Admin - Fatal编程技术网

Java Spring boot-从jar内部访问firebase admin sdk凭据json文件

Java Spring boot-从jar内部访问firebase admin sdk凭据json文件,java,spring,firebase-admin,Java,Spring,Firebase Admin,我有一个Java Spring引导后端应用程序,它使用Firebase Admin SDK。在FirebaseConfig的init方法中,我必须提供FirebaseOptions的凭据文件 @PostConstruct public void init() throws IOException { ClassLoader classLoader=Thread.currentThread().getContextClassLoader(); FileInputStream ref

我有一个Java Spring引导后端应用程序,它使用Firebase Admin SDK。在FirebaseConfig的init方法中,我必须提供FirebaseOptions的凭据文件

@PostConstruct
public void init() throws IOException {
    ClassLoader classLoader=Thread.currentThread().getContextClassLoader();
    FileInputStream refreshToken = new FileInputStream("src/main/resources/progresee-fa969-firebase-adminsdk-3vip2-d80bf340b7.json");
    FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredentials(GoogleCredentials.fromStream(refreshToken))
        .setDatabaseUrl(dbUrl)
        .build();
    FirebaseApp.initializeApp(options);
}
当我在本地运行时,一切正常,但是当我构建jar文件并上传到服务器托管服务(AWS)时,我得到一个FileNotFound错误-

Caused by: java.io.FileNotFoundException: /progresee-fa969-firebase-adminsdk-3vip2-d80bf340b7.json (No such file or directory)
at java.io.FileInputStream.open0(Native Method) ~[na:1.8.0_222]
at java.io.FileInputStream.open(FileInputStream.java:195) ~[na:1.8.0_222]
at java.io.FileInputStream.<init>(FileInputStream.java:138) ~[na:1.8.0_222]
at java.io.FileInputStream.<init>(FileInputStream.java:93) ~[na:1.8.0_222]
at com.progresee.app.firebase.FirebaseConfig.init(FirebaseConfig.java:55) ~[classes!/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_222]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_222]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_222]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_222]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:363) ~[spring-beans-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:307) ~[spring-beans-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136) ~[spring-beans-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
... 74 common frames omitted
原因:java.io.FileNotFoundException:/progresee-fa969-firebase-adminsdk-3vip2-d80bf340b7.json(无此类文件或目录)
在java.io.FileInputStream.open0(本机方法)~[na:1.8.0_222]
在java.io.FileInputStream.open(FileInputStream.java:195)~[na:1.8.0_222]
在java.io.FileInputStream.(FileInputStream.java:138)~[na:1.8.0_222]
在java.io.FileInputStream.(FileInputStream.java:93)~[na:1.8.0_222]
在com.progresee.app.firebase.FirebaseConfig.init(FirebaseConfig.java:55)~[classes!/:na]
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)~[na:1.8.0_222]
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)~[na:1.8.0\u 222]
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)~[na:1.8.0Þ]
在java.lang.reflect.Method.invoke(Method.java:498)~[na:1.8.0_222]
在org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:363)~[spring-beans-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
在org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInMethods(InitDestroyAnnotationBeanPostProcessor.java:307)~[spring-beans-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
在org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)~[spring-beans-5.1.9.RELEASE.jar!/:5.1.9.RELEASE]
... 省略了74个公共框架
我试图将文件上传到s3 bucket或firebase,并通过URL访问它,但这种方式在本地甚至不起作用

提前感谢,,
Chen.

要在fat jar中添加JSON配置,请遵循以下步骤

  • 将JSON文件放入
    src/main/resources

  • 将资源加载器注入服务

    @Autowired
    资源加载器;
    
  • 获取资源的inputstream,而不是获取文件

    Resource-Resource=resourceLoader.getResource(“classpath:firebaseFile.json”);
    InputStream InputStream=resource.getInputStream();
    
  • 在firebase选项中传递inputstream


  • 这回答了你的问题吗?仍然会收到与以下内容相同的错误:
    .setCredentials(GoogleCredentials.fromStream(inputStream))
    :)