休息FB在Servlet中抛出异常

时间:2015-11-17 06:04:40

标签: java eclipse servlets restfb

我在项目中有一个非常基本的问题。

我想在Facebook上获取用户的好友列表,为此我使用了名为RestFb的API(找到here

现在进入编码,我已成功创建了一个名为 getFriends()的函数,其格式如下:

public List<User> getFriends(String APP_ID, String APP_SECRET, String CODE){
    //APP_ID -> Application Id generated in Facebook
    //APP_SECRET -> Secret that you get from Facebook when you create the APP
    //CODE -> A key that is sent to your servlet/callback url when you successfully logs in Fb with all the permissions given to App
}

此函数是一个可以从任何地方调用的静态函数。现在当我在回调中使用main函数从Fb获取代码后调用此函数时,它可以正常工作,并且给了我应用程序的所有用户这些是我的朋友。但是,当我创建一个servlet并尝试调用此函数时,它会抛出此错误:

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet execution threw an exception
root cause

java.lang.NoClassDefFoundError: com/restfb/FacebookClient
    com.av.test.GetFriendList.doPost(GetFriendList.java:45)
    com.av.test.GetFriendList.doGet(GetFriendList.java:31)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause

java.lang.ClassNotFoundException: com.restfb.FacebookClient
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    com.av.test.GetFriendList.doPost(GetFriendList.java:45)
    com.av.test.GetFriendList.doGet(GetFriendList.java:31)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

我在Eclipse中创建了这个项目,并使用Eclipse的添加外部JAR 选项添加了 RestFb 的Jar。我很困惑该怎么办?

这是代码: 的 GetFriendListMain.java

public class GetFriendListMain{
   public static List<User> getFriends(String APP_ID, String APP_SECRET, String CODE) throws Exception{
      //code goes here
   }
}

这是我的servlet。

GetFriendList.java

public class GetFriendList extends HttpServlet {
   //doGet()
   public void doPost(...){
      String CODE = request.getParameter("code");
      String APP_ID = Config.APP_ID;
      String APP_SECRET = Config.APP_SECRET;
      List<User> users = GetFriendListMain.getFriends(APP_ID,APP_SECRET,CODE);
      //send this list back to caller to show on webpage
   }
}

请帮帮我。 提前致谢。 :)

1 个答案:

答案 0 :(得分:3)

您是否尝试在部署程序集中添加所需的存档文件?

  

https://www.genuitec.com/products/myeclipse/learning-center/basics/myeclipse-deployment-assembly/

或者您也可以使用像apache maven这样的构建工具,并将所需的存档添加为依赖项。