首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InputStreamReader抛出NullPointerException

InputStreamReader抛出NullPointerException
EN

Stack Overflow用户
提问于 2018-03-02 11:48:36
回答 2查看 2.4K关注 0票数 1

首先,下面的代码片段是Google应用程序的一部分,并且运行在我的本地客户端( Raspberry Pi 1 )上。为了能够从连接到Pi的传感器向云发送数据,需要授权。所有需要的客户端机密都存储在src/main/resources中的"client_secrets.json“中。

项目层次结构

在尝试使用客户端机密授权以下代码时,会引发一个NullPointerException。它是类"CmdLineAuthenticationProvider“的一部分(请参阅项目层次结构)。

代码语言:javascript
复制
InputStreamReader reader = new InputStreamReader(getClass().getClassLoader().getResourceAsStream(this.clientSecretsFile));

这可能只是一个与路径相关的错误,但我的解决方法都没有奏效(我试图调整路径,并将client_secrets.json复制到不同的位置,希望它能找到它)。"clientSecretsFile“在"RaspiApp”类中被设置为"/client_secret.json“。

代码语言:javascript
复制
CmdLineAuthenticationProvider provider = new CmdLineAuthenticationProvider();

    provider.setClientSecretsFile("client_secret.json");
    provider.setScopes(SCOPES);

    // get the oauth credentials using the client secrets
    Credential credential = provider.authorize();

在我的pom.xml中,我将资源指定如下:

代码语言:javascript
复制
<sourceDirectory>src/main/java</sourceDirectory>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <targetPath>${project.build.directory}/classes</targetPath>
            <filtering>false</filtering>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
    </resources>

完整的错误代码:

代码语言:javascript
复制
java.lang.NullPointerException
    at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
    at de.econfood.pi.app.CmdLineAuthenticationProvider.getCredential(CmdLineAuthenticationProvider.java:102)
    at de.econfood.pi.app.CmdLineAuthenticationProvider.authorize(CmdLineAuthenticationProvider.java:64)
    at de.econfood.pi.app.RaspiApp.getSensorEndpoint(RaspiApp.java:171)
    at de.econfood.pi.app.RaspiApp.sendSensorData(RaspiApp.java:144)
    at de.econfood.pi.app.RaspiApp.onGetRecsets(RaspiApp.java:126)
    at de.econfood.pi.app.BrmReadThread.readBuffer(BrmReadThread.java:112)
    at de.econfood.pi.app.BrmReadThread.run(BrmReadThread.java:20)
    at java.lang.Thread.run(Thread.java:745)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-04 14:29:05

经过两天的故障排除后我自己解决了这个问题.

导致此错误的原因是POM.xml配置错误,这导致client_secret.json不在应该在JAR中的位置,因此不可能在那里找到它。

票数 0
EN

Stack Overflow用户

发布于 2018-03-02 11:52:59

以"/“开头的路径通常被视为绝对路径。您需要的是一条相对路径,因此省略前面的"/“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49068503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档