0

我最近的任务是开始构建一个新的 Spring 3 MVC 项目(在这方面我是个菜鸟)。在开普勒建立了大部分 POC 项目后,我有:

  • 可在(外部)Tomcat7 中部署和工作的原型 webapp(HelloWorld 风格)。
  • 配置 Logback 并向控制台报告:
...
12:46:21.916 [http-apr-8080-exec-5] 跟踪 oswsvInternalResourceViewResolver - 缓存视图 [主页]
12:46:21.916 [http-apr-8080-exec-5] 调试 osweb.servlet.DispatcherServlet - 渲染视图 [org.springframework.web.servlet.view.JstlView: name 'home'; 名称为“sample”的 DispatcherServlet 中的 URL [/WEB-INF/view/home.jsp]]
12:46:21.916 [http-apr-8080-exec-5] TRACE osweb.servlet.view.JstlView - 使用模型 {name=lingxotika.org} 和静态属性 {} 呈现名称为“home”的视图
12:46:21.916 [http-apr-8080-exec-5] 调试 osweb.servlet.view.JstlView - 添加了 [java.lang.String] 类型的模型对象“名称”以在视图中请求名称为“home”
12:46:21.921 [http-apr-8080-exec-5] 调试 osweb.servlet.view.JstlView - 转发到 InternalResourceView 'home' 中的资源 [/WEB-INF/view/home.jsp]
12:46:21.957 [http-apr-8080-exec-5] TRACE osweb.servlet.DispatcherServlet - 清除线程绑定请求上下文:org.apache.catalina.connector.RequestFacade@1bb3db1b
12:46:21.960 [http-apr-8080-exec-5] 调试 osweb.servlet.DispatcherServlet - 成功完成请求
12:46:21.960 [http-apr-8080-exec-5] TRACE oswcsAnnotationConfigWebApplicationContext - 在命名空间“sample-servlet”的 WebApplicationContext 中发布事件:ServletRequestHandledEvent: url=[/codetutr/home/]; 客户端=[127.0.0.1];方法=[GET]; servlet=[示例];会话=[0108E781644C1268FD92C11BD78888FB];用户=[空]; 时间=[87ms];状态=[确定]
  • 但是当我进入我的代码以使用Logger类方法时(我已经尝试了这两种方法 ) org.slf4j.Loggerch.qos.logback.classicEclipse 无法识别 Logger 实例中的方法:

    package org.lingxotika.controller;

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;

    @Controller
    public class SampleController {
        static final Logger log = LoggerFactory.getLogger(SampleController.class);

        log.info("Hit Controller...");    // Error is here

        @RequestMapping("home")
        public String loadHomePage(Model model) {
            model.addAttribute("name", "lingxotika.org");
            return "home";
        }
    }

输入后的 Eclipse Code Assistlog.显示以下选项(抱歉,还不能发布屏幕截图):

new - create new object
nls - non-externalized string marker
runnable - runnable
toarray - convert collection to array

总而言之,我在这里这里看到的例子表明这不是 Spring 的限制或我承认缺乏对它的能力,而是我忽略的 Eclipse 问题。我避免发布可能不相关的信息,但很乐意提供任何进一步的代码、日志或配置示例。任何帮助,将不胜感激。

4

1 回答 1

1

好像您的项目中没有 slf4j api jar。

由于它在 tomcat 中工作,因此 tomcat 可能正在使用“提供”的 jar,即:作为 tomcat 应用程序一部分的 jar。

如果您使用的是 maven,则需要在 pom 中具有以下依赖项:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
于 2013-07-21T00:14:18.480 回答