java - ClassNotFoundException 与 Spring JavaConfigWebApplicationContext

标签 java spring maven spring-mvc

我在尝试创建新的 Spring MVC webapp 时遇到以下错误

ClassNotFoundException: org.springframework.config.java.JavaConfigWebApplicationContext

奇怪的是,JavaConfigWebApplicationContext 在下面的依赖中

<dependency>
  <groupId>org.springframework.javaconfig</groupId>
  <artifactId>spring-javaconfig</artifactId>
  <version>1.0.0.m3</version>
</dependency>

这似乎是关闭的,因为我不记得在其他 Spring 项目中显式添加上述依赖项。我一定是错误地配置了应用程序。这是我的配置

点数

    <dependencies>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- Spring MVC -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>

    <dependency>
  <groupId>org.springframework.javaconfig</groupId>
  <artifactId>spring-javaconfig</artifactId>
  <version>1.0.0.m3</version>
</dependency>
        <!-- AspectJ -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${org.aspectj-version}</version>
        </dependency>
        <!-- Other Web dependencies -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>${servlet.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>${jsp.version}</version>
            <scope>provided</scope>
        </dependency>

        <!-- Spring and Transactions -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>

        <!-- Logging with SLF4J & LogBack -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
            <scope>runtime</scope>
        </dependency>


        <!-- Test Artifacts -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring-framework.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

Web.xml

<!-- Bootstrap the root application context as usual using ContextLoaderListener -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!-- Configure ContextLoaderListener to use JavaConfigWebApplicationContext
         instead of the default XmlWebApplicationContext -->
    <context-param>
        <param-name>contextClass</param-name>
        <param-value>org.springframework.config.java.JavaConfigWebApplicationContext</param-value>
    </context-param>
    <!-- Configuration locations must consist of one or more comma- or space-delimited
         fully-qualified @Configuration classes -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>org.mycompany.app.config.AppContext</param-value>
    </context-param>


      <!-- Declare a Spring MVC DispatcherServlet as usual -->
    <servlet>
        <servlet-name>test</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- Configure DispatcherServlet to use JavaConfigWebApplicationContext
             instead of the default XmlWebApplicationContext -->
        <init-param>
            <param-name>contextClass</param-name>
            <param-value>org.springframework.config.java.JavaConfigWebApplicationContext</param-value>
        </init-param>
        <!-- Again, config locations must consist of one or more comma- or space-delimited
             and fully-qualified @Configuration classes -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>org.mycompany.app.config.WebConfig</param-value>
        </init-param>
    </servlet>

最佳答案

spring-javaconfig 是一个相当古老的实验性实现。使用 Spring 3.1 或更高版本,Java 配置包含在 Spring Core Framework 中。

参见 AnnotationConfigWebApplicationContext .

关于java - ClassNotFoundException 与 Spring JavaConfigWebApplicationContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26892429/

相关文章:

java - 用于 Eclipse 或 Maven 的 UML 逆向工程工具

java - 检查数组是否已分配大小

java - 使用 Jackson 反序列化要列出的重复键

Spring JPA : Issue with shared PK in one-to-one relationship

java - 接受 0.5 和整数的正则表达式

maven - 使用 mvnDebug 进行远程调试,不会在断点处停止

windows - 尝试离线使用带有 clojure 的 lighttable - 没有互联网的 Windows 7

java - 关于 JavaBean

java - 在 Java 中转换可为 null 的整数值(Short、Long 等)

java - 在 Websphere 8.5 上升级到 Spring 3.2 错误 : Resource annotations on DispatcherServlet will be ignored