我在Tomcat Webb应用程序中收到java.lang.ClassNotFoundException:org.springframework.web.context.WebApplicationContext

娜塔莉(Natalie)

我试图用maven运行一个Web应用程序,以智能的方式在tomcat服务器上运行。我得到:工件crm-web:war爆炸:工件部署期间出错。

Loggs:

原因:java.lang.NoClassDefFoundError:org / springframework / web / context / WebApplicationContext原因:java.lang.ClassNotFoundException:org.springframework.web.context.WebApplicationContext SEVERE:异常调用方法createStandardContext SEVERE:异常调用方法manageApp

这是项目结构:

src
 -main
   -webapp
     -js
     -pages
     -css
     -tiles
     -WEB-INF
        -web.xml
        -tiles.xml
        -springservlet-servlet.xml
        -applicationContext.xml
     -pom.xml

pom.xml

<packaging>war</packaging>
<version>1.0</version>
<!-- Shared version number properties -->

<properties>
    <org.springframework.version>3.1.0.RELEASE</org.springframework.version>
    <TR-CA-VERSION>1.0</TR-CA-VERSION>
    <lib_scope>provided</lib_scope>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>


<profiles>
    <profile>
        <id>local-dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.6</version>
                    <executions>
                        <execution>
                            <id>unzip-war</id>
                            <phase>none</phase> <!-- this disables plugin -->
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
    <profile>
        <id>production-artifact-compilation</id>
        <activation>
            <property>
                <name>env</name>
                <value>production-artifact-compilation</value>
            </property>
        </activation>

    </profile>
</profiles>



<dependencies>
    <dependency>
        <groupId>ru.berkana</groupId>
        <artifactId>crm-server</artifactId>
        <version>1.0</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${org.springframework.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.3.1.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
        <scope>${lib_scope}</scope>
    </dependency>
    <!--
        Core utilities used by other modules.
        Define this if you use Spring Utility APIs (org.springframework.core.*/org.springframework.util.*)
    -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${org.springframework.version}</version>
        <scope>${lib_scope}</scope>
    </dependency>

    <!--
        Expression Language (depends on spring-core)
        Define this if you use Spring Expression APIs (org.springframework.expression.*)
    -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>${org.springframework.version}</version>
        <scope>${lib_scope}</scope>
    </dependency>

    <!--
        Bean Factory and JavaBeans utilities (depends on spring-core)
        Define this if you use Spring Bean APIs (org.springframework.beans.*)
    -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${org.springframework.version}</version>
        <scope>${lib_scope}</scope>
    </dependency>

    <!--
        Aspect Oriented Programming (AOP) Framework (depends on spring-core, spring-beans)
        Define this if you use Spring AOP APIs (org.springframework.aop.*)
    -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${org.springframework.version}</version>
        <scope>${lib_scope}</scope>
    </dependency>

    <!--
        Application Context (depends on spring-core, spring-expression, spring-aop, spring-beans)
        This is the central artifact for Spring's Dependency Injection Container and is generally always defined
    -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${org.springframework.version}</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
        <scope>${lib_scope}</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>${org.springframework.version}</version>
        <scope>${lib_scope}</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
        <scope>${lib_scope}</scope>
    </dependency>

    <!--
        Various Application Context utilities, including EhCache, JavaMail, Quartz, and Freemarker integration
        Define this if you need any of these integrations
    -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${org.springframework.version}</version>
        <scope>${lib_scope}</scope>
    </dependency>

    <!--
        Transaction Management Abstraction (depends on spring-core, spring-beans, spring-aop, spring-context)
        Define this if you use Spring Transactions or DAO Exception Hierarchy
        (org.springframework.transaction.*/org.springframework.dao.*)
    -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${org.springframework.version}</version>
        <scope>${lib_scope}</scope>
    </dependency>

    <!--
        JDBC Data Access Library (depends on spring-core, spring-beans, spring-context, spring-tx)
        Define this if you use Spring's JdbcTemplate API (org.springframework.jdbc.*)
    -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${org.springframework.version}</version>
        <scope>${lib_scope}</scope>
    </dependency>

    <!--
        Object-to-Relation-Mapping (ORM) integration with Hibernate, JPA, and iBatis.
        (depends on spring-core, spring-beans, spring-context, spring-tx)
        Define this if you need ORM (org.springframework.orm.*)
    -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${org.springframework.version}</version>
        <scope>${lib_scope}</scope>
    </dependency>

    <!--
        Object-to-XML Mapping (OXM) abstraction and integration with JAXB, JiBX, Castor, XStream, and XML Beans.
        (depends on spring-core, spring-beans, spring-context)
        Define this if you need OXM (org.springframework.oxm.*)
    -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-oxm</artifactId>
        <version>${org.springframework.version}</version>
        <scope>${lib_scope}</scope>
    </dependency>

    <!--
        Web application development utilities applicable to both Servlet and Portlet Environments
        (depends on spring-core, spring-beans, spring-context)
        Define this if you use Spring MVC, or wish to use Struts, JSF, or another web framework with Spring (org.springframework.web.*)
    -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${org.springframework.version}</version>
        <scope>${lib_scope}</scope>
    </dependency>

    <!--
        Spring MVC for Servlet Environments (depends on spring-core, spring-beans, spring-context, spring-web)
        Define this if you use Spring MVC with a Servlet Container such as Apache Tomcat (org.springframework.web.servlet.*)
    -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${org.springframework.version}</version>
        <scope>${lib_scope}</scope>
    </dependency>

    <dependency>
        <groupId>org.atmosphere</groupId>
        <artifactId>atmosphere-runtime</artifactId>
        <version>2.4.5</version>
        <scope>${lib_scope}</scope>
    </dependency>

</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>


        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.6</version>
            <executions>
                <execution>
                    <id>unzip-war</id>
                    <phase>package</phase>
                    <configuration>
                        <tasks>
                            <echo message="unzip phase"/>
                            <unzip src="${project.build.directory}/${project.build.finalName}.war"
                                   dest="C:/Users/Наталья/IdeaProjects/Berkana/tr-ca-private-cs/common/1/current/web/trca"/>
                            <delete dir="C:/Users/Наталья/IdeaProjects/Berkana/tr-ca-private-cs/common/1/current/web/trca/css/joined/"/>
                            <delete dir="C:/Users/Наталья/IdeaProjects/Berkana/tr-ca-private-cs/common/1/current/web/trca/css/notjoined/"/>
                            <delete dir="C:/Users/Наталья/IdeaProjects/Berkana/tr-ca-private-cs/common/1/current/web/trca/js/joined/"/>
                            <delete file="C:/Users/Наталья/IdeaProjects/Berkana/tr-ca-private-cs/common/1/current/web/trca/js/jquery-1.7.11.0.js"/>
                            <delete file="C:/Users/Наталья/IdeaProjects/Berkana/tr-ca-private-cs/common/1/current/web/trca/js/jquery-1.7.1.min1.0.js"/>
                            <delete file="C:/Users/Наталья/IdeaProjects/Berkana/tr-ca-private-cs/common/1/current/web/trca/js/jquery-1.7.1.js"/>
                        </tasks>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.2</version>
            <executions>
                <execution>
                    <id>package-with-source-js-css</id>
                    <phase>package</phase>
                </execution>
            </executions>
        </plugin>


        <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>yuicompressor-maven-plugin</artifactId>
            <version>1.3.0</version>
            <executions>
                <execution>
                    <phase>process-sources</phase>
                    <goals>
                        <goal>compress</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <statistics>true</statistics>
                <nosuffix>false</nosuffix>
                <failOnWarning>false</failOnWarning>
                <gzip>false</gzip>
                <suffix>${TR-CA-VERSION}</suffix>
                <aggregations>
                    <aggregation>
                        <removeIncluded>false</removeIncluded>
                        <inputDir>src/main/webapp/css/joined</inputDir>
                        <includes>
                            <include>**/*.css</include>
                        </includes>
                        <output>${project.build.directory}/${project.build.finalName}/css/all.css</output>
                    </aggregation>
                    <aggregation>
                        <removeIncluded>false</removeIncluded>
                        <inputDir>src/main/webapp/css/joinedNew</inputDir>
                        <includes>
                            <include>**/*.css</include>
                        </includes>
                        <output>${project.build.directory}/${project.build.finalName}/css/allnew.css</output>
                    </aggregation>
                    <aggregation>
                        <!-- remove files after aggregation (default: false) -->
                        <removeIncluded>false</removeIncluded>
                        <inputDir>src/main/webapp/js/joined</inputDir>
                        <includes>
                            <include>**/*.js</include>
                        </includes>
                        <output>${project.build.directory}/${project.build.finalName}/js/all.js</output>
                    </aggregation>
                </aggregations>
            </configuration>
        </plugin>

    </plugins>
</build>

<pluginRepositories>
    <pluginRepository>
        <name>oss.sonatype.org - github-releases</name>
        <id>oss.sonatype.org-github-releases</id>
        <url>http://oss.sonatype.org/content/repositories/github-releases</url>
    </pluginRepository>
</pluginRepositories>
<?xml version="1.0" encoding="UTF-8"?>

Tiles.xml

<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
    <property name="definitions">
        <list>
            <!--Set up your Tiles definition RIGHT HERE-->
            <value>/WEB-INF/tiles.xml</value>
        </list>
    </property>
</bean>

<bean id="messageSource"
      class="ru.berkana.crm.util.web.CustomMessageSource">
    <property name="basename" value="/WEB-INF/classes/locales/strings_ru_STUDY_CLUB.properties" />
    <property name="defaultEncoding" value="UTF-8"/>
</bean>

<bean id="localeResolver"
      class="ru.berkana.crm.util.web.CustomLocaleResolver">
</bean>

web.xml

<filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>ru.berkana.crm.util.web.AllRequestsFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<listener>
    <listener-class>ru.berkana.crm.util.web.ContextLoaderListener</listener-class>
</listener>

<listener>
    <listener-class>ru.berkana.crm.util.web.TRCASessionListener</listener-class>
</listener>

<servlet>
    <servlet-name>springservlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet>
    <servlet-name>changepassword</servlet-name>
    <servlet-class>ru.berkana.crm.util.web.ChangePasswordServlet</servlet-class>
</servlet>

<servlet>
    <servlet-name>login</servlet-name>
    <jsp-file>/tiles/login.jsp</jsp-file>
</servlet>

<servlet>
    <servlet-name>zadarma</servlet-name>
    <servlet-class>ru.berkana.crm.providers.servlets.ZadarmaAPIServlet</servlet-class>
</servlet>

<servlet>
    <servlet-name>mango</servlet-name>
    <servlet-class>ru.berkana.crm.providers.servlets.MangoAPIServlet</servlet-class>
</servlet>

<servlet>
    <servlet-name>robomarket</servlet-name>
    <servlet-class>ru.berkana.crm.robomarket.RobomarketAPIServlet</servlet-class>
</servlet>

<servlet>
    <servlet-name>robokassa</servlet-name>
    <servlet-class>ru.berkana.crm.robomarket.RobokassaAPIServlet</servlet-class>
</servlet>

<servlet>
    <servlet-name>push_callback</servlet-name>
    <jsp-file>/pages/pushcallback.jsp</jsp-file>
</servlet>

<servlet>
    <servlet-name>push_confirm</servlet-name>
    <servlet-class>ru.berkana.crm.providers.servlets.PushConfirmServlet</servlet-class>
</servlet>

<servlet>
    <servlet-name>push</servlet-name>
    <servlet-class>org.atmosphere.cpr.MeteorServlet</servlet-class>
    <init-param>
        <param-name>org.atmosphere.servlet</param-name>
        <param-value>org.springframework.web.servlet.DispatcherServlet</param-value>
    </init-param>
    <init-param>
        <param-name>contextClass</param-name>
        <param-value>
            org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </init-param>
    <init-param>
        <param-name>org.atmosphere.useNative</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>org.atmosphere.websocket.suppressJSR356</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>


<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter>
    <filter-name>loginredirection</filter-name>
    <filter-class>ru.berkana.crm.security.LoginRedirectionFilter</filter-class>
</filter>


<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
    <filter-name>loginredirection</filter-name>
    <url-pattern>/login</url-pattern>
</filter-mapping>

<servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/login</url-pattern>
</servlet-mapping>


<servlet-mapping>
    <servlet-name>changepassword</servlet-name>
    <url-pattern>/changePassword.htm</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>zadarma</servlet-name>
    <url-pattern>/zadarmaapi.htm</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>mango</servlet-name>
    <url-pattern>/mangoapi.htm</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>mango</servlet-name>
    <url-pattern>/mangoapi/*</url-pattern> <!-- mango api test-->
</servlet-mapping>

<servlet-mapping>
    <servlet-name>mango</servlet-name>
    <url-pattern>/mangoapi/events/call</url-pattern> <!-- mango api test-->
</servlet-mapping>

<servlet-mapping>
    <servlet-name>robomarket</servlet-name>
    <url-pattern>/robomarketapi.htm</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>push</servlet-name>
    <url-pattern>/push.htm</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>push_confirm</servlet-name>
    <url-pattern>/pushconfirm</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>push_callback</servlet-name>
    <url-pattern>/pushcallback.htm</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>springservlet</servlet-name>
    <url-pattern>*.htm</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>robokassa</servlet-name>
    <url-pattern>/robokassa.htm</url-pattern>
</servlet-mapping>

<error-page>
    <error-code>500</error-code>
    <location>/tiles/error.jsp</location>
</error-page>

<error-page>
    <error-code>404</error-code>
    <location>/tiles/error404.jsp</location>
</error-page>

<session-config>
    <session-timeout>30</session-timeout>
</session-config>

我已经完成的工作:

  • 添加了spring-asm-3.1.4.RELEASE.jar

  • 清除缓存

  • 添加到pom.xml

         <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
         <version>2.3.1.RELEASE</version>
         <exclusions>
             <exclusion>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-starter-tomcat</artifactId>
             </exclusion>
         </exclusions>
     </dependency>
    
娜塔莉(Natalie)

通过将所有必需的jar移到WEB-INF / lib文件夹,我能够解决此问题。原来他们在不同的目录中

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档