我的控制器(抽象控制器)正在调用服务类来获取URL。在我的服务类中,我在构造函数中实例化我的依赖项:
抽象控制器:
public class MyPageController extends AbstractController{
private UserService userService;
private LearnerService learnerService;
private TwitterService twitterService;
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
userService = UserServiceFactory.getUserService();
learnerService = new LearnerService();
twitterService=new TwitterService();
服务类:
public TwitterService(){
//
twitter = new Twitter();
}
但是当我尝试运行我的网络应用时,spring会抛出以下错误:
nested exception is java.lang.NoClassDefFoundError: twitter4j/Twitter:
java.lang.NoClassDefFoundError: twitter4j/Twitter
at com.hardwire.service.TwitterService.<init>(Twitter Service.java:21)
at com.hardwire.controller.
MyPageController.handleReq uestInternal(MyPageController.java:30)
为什么会抛出此错误?我不明白。我在使用它的服务类中导入了Twitter类。
答案 0 :(得分:1)
如果ClassLoader实例尝试加载类的定义并且找不到类的定义,则会得到NoClassDefFoundError。
这基本上意味着在运行时在类路径上找不到类。在代码中包含import声明是必需的但不足以使其工作,您还需要确保包含twitterj.Twitter的jar在应用程序类路径上。
最简单的方法是将jar复制到应用程序的WEB-INF / lib文件夹中。或者使用工具(例如Maven,Ivy,Ant或甚至像Eclipse这样的IDE)来确保将所需的罐子打包到您的战争中。
答案 1 :(得分:0)
您的WEB-INF / lib目录中是否有twitter4j jar?