【问题标题】:Running imported Getting Started project accessing facebook data appears NullPointerException运行导入的Getting Started项目访问facebook数据出现NullPointerException
【发布时间】:2015-10-06 22:21:08
【问题描述】:

我使用安装的 Eclipse 和 Tomcat 插件。我导入了 Spring Getting Started 项目来访问 facebook 数据。 Facebook 应用程序已注册。 Application.properties 已设置。类被编译。 我用

运行这个项目

mvn spring-boot:run

一切正常。 DispatherServlet 被启动。但是如果我打开 http://localhost:8080 我会得到错误

2015-07-16 14:02:38.158 ERROR 2248 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause java.lang.NullPointerException: null
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133)
at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
at com.sun.proxy.$Proxy42.isAuthorized(Unknown Source)
at hello.HelloController.helloFacebook(HelloController.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

等等。我该怎么办?请帮帮我!

下面有Application.java

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
}

}

HelloController.java

package hello;

import javax.inject.Inject;

import org.springframework.social.facebook.api.Facebook;
import org.springframework.social.facebook.api.PagedList;
import org.springframework.social.facebook.api.Post;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/")
public class HelloController {

private Facebook facebook;

@Inject
public HelloController(Facebook facebook) {
    this.facebook = facebook;
}

@RequestMapping(method=RequestMethod.GET)
public String helloFacebook(Model model) {
    if (!facebook.isAuthorized()) {
        return "redirect:/connect/facebook";
    }

    model.addAttribute(facebook.userOperations().getUserProfile());
    PagedList<Post> homeFeed = facebook.feedOperations().getHomeFeed();
    model.addAttribute("feed", homeFeed);

    return "hello";
}

}

你好.html

<html>
<head>
    <title>Hello Facebook</title>
</head>
<body>
    <h3>Hello, <span th:text="${facebookProfile.name}">Some User</span>!</h3>

    <h4>Here is your home feed:</h4>

    <div th:each="post:${feed}">
        <b th:text="${post.from.name}">from</b> wrote:
        <p th:text="${post.message}">message text</p>
        <img th:if="${post.picture}" th:src="${post.picture}"/>
        <hr/>
    </div>
</body>
</html>

facebookConnect.html

<html>
<head>
    <title>Hello Facebook</title>
</head>
<body>
    <h3>Connect to Facebook</h3>

    <form action="/connect/facebook" method="POST">
        <input type="hidden" name="scope" value="read_stream" />
        <div class="formInfo">
            <p>You aren't connected to Facebook yet. Click the button to connect this application with your Facebook account.</p>
        </div>
        <p><button type="submit">Connect to Facebook</button></p>
    </form>
</body>
</html>

和 facebookConnected.html

<html>
<head>
    <title>Hello Facebook</title>
</head>
<body>
    <h3>Connected to Facebook</h3>

    <p>
        You are now connected to your Facebook account.
        Click <a href="/">here</a> to see some entries from your Facebook home feed.
    </p>        
</body>
</html>

【问题讨论】:

  • 邮政编码是你应该做的
  • 我已经添加了代码!
  • 嗯,不知道为什么这是一个空指针......你见过这个stackoverflow.com/questions/26762544/…
  • 问题出在 1.2.5 boot-starter-parent 中的一个错误中(参见下面的答案)。需要在 1.2.3 boot-starter-parent 上更改

标签: java eclipse spring facebook maven


【解决方案1】:

请在您的 pom.xml 中使用以下内容。我使用 1.2.4.RELEASE 和 1.2.5.RELEASE 作为 boot-starter-parent 时遇到了同样的问题。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.2.3.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

【讨论】:

  • 非常感谢@morrowyn!实际上这是 1.2.5 boot-starter-parent 中的错误
  • 从 1.2.7-RELEASE 降级后也在这里解决。谢谢。
猜你喜欢
  • 2011-04-02
  • 2018-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-02
  • 2012-11-11
相关资源
最近更新 更多