maven管理的jar包,项目中引用不到.

在学习maven,试用于一个spring mvc项目.
在pom.xml中添加了如下内容:

[code="java"]


org.springframework
spring-webmvc
3.0.6.RELEASE
compile


[/code]

并在%user%.m2\repository\org\springframework****
中下载了所依赖的多个jar包,包括 spring-webmvc,spring-web,spring-core,spring-beans,aop等等.

当启动项目时,报错:
[code="java"]
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1094)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3099)
at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:404)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1309)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Thread.java:722)
[/code]

提示无法load DispatcherServlet

然后将 spring-webmvc.jar添加到 WebContxt/WEB-INF/lib 目录
报错:

[code="java"]
java.lang.ClassNotFoundException: org.springframework.beans.BeansException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2404)
at java.lang.Class.getConstructor0(Class.java:2714)
at java.lang.Class.newInstance0(Class.java:343)
at java.lang.Class.newInstance(Class.java:325)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1115)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
[/code]

证明找到了spring-webmvc.jar ,但其他依赖包未找到,

问题是怎样将maven的jar包添加到项目依赖里?
ps:在项目的build path里已有 Maven Dependencies ,里面也有 spring的包,

[quote]java.lang.ClassNotFoundException[/quote]

报这个错的最大可能是必要的包没有,而且你说的项目启动时没有加载依赖包到项目中,那你使用的是什么IDE,这个事情IDE完全会帮我们去做,而不需要额外的配置,看看你的IDE配置吧

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
        <exclusions>
            <!-- Exclude Commons Logging in favor of SLF4j -->
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-hibernate3</artifactId>
        <version>2.0.7</version>
    </dependency>

这是我使用的spring包。


UTF-8
3.0.5.RELEASE
3.6.6.Final
1.5.10
1.6
4.8.2
1.6.10

为了避免在每个依赖上加上版本号,可以在属性这个元素中设置版本号。

那你的问题是?我没有太懂。

多谢楼主,我在用maven配置SpringMvc的时候也遇到这个问题了,非常感谢提供解决方法

多谢分享, 我也遇到了这个问题, 我这边的情况是:用maven 添加spring mvc jar包后,工程中没有被引用到这些jar,问题有两个地方:
1. 工程名上右击 -> maven 中没有操作update project;
2. 工程名上右击 -> Properties -> Deployment Assembly,右边框中没有操作如下步骤:
Add -> Java Build Path Entries -> next -> 选择maven Dependencies;

通过上面操作后还是有点小问题,虽然spring jar在工程有被引用进来了,但是代码中无法引用类库,于是操作如下即可:
1. 工程名上右击 -> maven -> Disable Maven Nature;
2. 工程名上右击 -> Configure -> Convert to maven project;
3. 最后需再次检查最上面描述两个问题的地方是否有重现,如有,重复步骤;