我的 Controller (抽象 Controller )正在调用服务类来获取 URL。在我的服务类中,我在构造函数中实例化我的依赖项:
抽象 Controller :
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 类导入到使用它的服务类中。
最佳答案
如果 ClassLoader 实例尝试加载类的定义但找不到该类的定义,则会收到 NoClassDefFoundError。
这基本上意味着运行时在类路径上找不到该类。在代码中包含导入声明是必需的,但不足以使其正常工作,您还需要确保包含 twitterj.Twitter 的 jar 位于应用程序类路径上。
最简单的方法是将 jar 复制到应用程序的 WEB-INF/lib 文件夹中。或者使用工具(如 Maven 、 Ivy 、 Ant 甚至像 Eclipse 这样的 IDE )来确保将所需的 jar 打包到您的 war 中。
关于java - Spring看不到我导入的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1317836/