Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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
如何在Google App Engine(JAVA)中读取文件_Java_Google App Engine - Fatal编程技术网

如何在Google App Engine(JAVA)中读取文件

如何在Google App Engine(JAVA)中读取文件,java,google-app-engine,Java,Google App Engine,我必须为Firebase SDK将我的服务器授权给Firebase。但不幸的是,我无法读取credentials.json文件。我已将service.json文件放入WEB-INF文件夹 我已将此添加到appengine-web.xml文件中: <resource-files> <include path="/service.json"/> </resource-files> 但是当我试图读取文件时,我得到一个NullPointerException

我必须为Firebase SDK将我的服务器授权给Firebase。但不幸的是,我无法读取credentials.json文件。我已将service.json文件放入WEB-INF文件夹

我已将此添加到appengine-web.xml文件中:

<resource-files>
    <include path="/service.json"/>
</resource-files>
但是当我试图读取文件时,我得到一个NullPointerException

这是我的全班同学:

@Api(
  name = "myApi",
version = "v1",
namespace = @ApiNamespace(
ownerDomain = "backend",
ownerName = "backend",
packagePath=""
  )
)
public class MyEndpoint {

private static final Logger log = Logger.getLogger(MyEndpoint.class.getName());
private String uid;

@ApiMethod(name = "signup")
public MyBean signup(@Named("token")String token)
{
    uid = "empty";
    uid = "init";

    log.info(new File(getClass().getResource("/WEB-INF/service.json").toString()).exists()+"");

    FirebaseOptions options = new FirebaseOptions.Builder()
                .setServiceAccount(getClass().getResourceAsStream("/WEB-INF/service.json"))
                .setDatabaseUrl("url")
                .build();

    FirebaseApp.initializeApp(options);
    uid = "initialized";

    log.severe("initialized");
    FirebaseAuth.getInstance().verifyIdToken(token)
            .addOnSuccessListener(new OnSuccessListener<FirebaseToken>() {

                    @Override
                    public void onSuccess(FirebaseToken decodedToken) {uid = decodedToken.getUid();
                    }
            });

    MyBean b = new MyBean();
    if(!uid.equals(""))
        b.setData(uid);
    // else
    // b.setData("failed");

    return b;
}
@Api(
name=“myApi”,
version=“v1”,
namespace=@ApiNamespace(
ownerDomain=“后端”,
ownerName=“后端”,
packagePath=“”
)
)
公共类MyEndpoint{
私有静态最终记录器log=Logger.getLogger(MyEndpoint.class.getName());
私有字符串uid;
@ApiMethod(name=“注册”)
公共MyBean注册(@Named(“token”)字符串标记)
{
uid=“空”;
uid=“init”;
log.info(新文件(getClass().getResource(“/WEB-INF/service.json”).toString()).exists()+”);
FirebaseOptions=newfirebaseOptions.Builder()
.setServiceAccount(getClass().getResourceAsStream(“/WEB-INF/service.json”))
.setDatabaseUrl(“url”)
.build();
FirebaseApp.initializeApp(选项);
uid=“已初始化”;
对数严重(“已初始化”);
FirebaseAuth.getInstance().verifyIdToken(令牌)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
public void onSuccess(FirebaseToken decodedToken){uid=decodedToken.getUid();
}
});
MyBean b=新的MyBean();
如果(!uid.equals(“”)
b、 设置数据(uid);
//否则
//b.设置数据(“失败”);
返回b;
}
}

提前感谢您的帮助。

您可以使用

this.getClass().getResourceAsStream("/WEB-INF/service.json");

无需修改appengine-web.xml。如何读取文件?当我使用FileInputStream读取此文件时,访问被拒绝,但后来我查找了它,有人说我应该这样做,但使用此代码,我只得到NullPointerException。有关StackOverflow的许多问题解释了如何在App Engine上读取静态文件。我试过这个答案,但仍然不起作用。我必须把文件放在哪里?目前我在我的WEB-INF文件夹中得到了它,该文件的路径是什么?请看,我仍然使用此解决方案获得NullPointerException NullPointerException应该指向特定的代码行。哪一个?setServiceAccount(this.getClass().getResourceAsStream(“/WEB-INF/service.json”))这一个您在正确的上下文中使用它吗?什么类包含此方法?如果有帮助,我已将整个类添加到问题中。
this.getClass().getResourceAsStream("/WEB-INF/service.json");