Spring无法看到我导入的类

时间:2009-08-23 05:21:05

标签: java spring

我的控制器(抽象控制器)正在调用服务类来获取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类。

2 个答案:

答案 0 :(得分:1)

如果ClassLoader实例尝试加载类的定义并且找不到类的定义,则会得到NoClassDefFoundError。

这基本上意味着在运行时在类路径上找不到类。在代码中包含import声明是必需的但不足以使其工作,您还需要确保包含twitterj.Twitter的jar在应用程序类路径上。

最简单的方法是将jar复制到应用程序的WEB-INF / lib文件夹中。或者使用工具(例如MavenIvyAnt或甚至像Eclipse这样的IDE)来确保将所需的罐子打包到您的战争中。

答案 1 :(得分:0)

您的WEB-INF / lib目录中是否有twitter4j jar?