version compatibility issue between spring boot, struts2-core and tomcat-embed-jasper in web application

37 Views Asked by At

I am trying to run a spring boot application with following pom.xml

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>reusables</groupId>
<artifactId>reusables-web</artifactId>
<packaging>war</packaging>
<name>reusables-web</name>
<parent>
    <groupId>reusables-parent</groupId>
    <artifactId>reusables</artifactId>
    <version>2023</version>
</parent>
<properties>
    <sonar.coverage.jacoco.xmlReportPaths>../jacoco-report-aggregate/target/site/jacoco-aggregate/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
    <spring.version>2.7.11</spring.version>
</properties>
<dependencies>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.3.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.messaging.saaj</groupId>
        <artifactId>saaj-impl</artifactId>
        <version>1.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <version>${spring.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <version>11.0.0-M18</version>
        <scope>provided</scope>
        <exclusions>
            <exclusion>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.5.30</version>
        <exclusions>
            <exclusion>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
            </exclusion>
            <exclusion>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!--<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency> -->
    <dependency>
        <groupId>TreeGrid</groupId>
        <artifactId>TreeGrid</artifactId>
        <version>6.1</version>
    </dependency>
    <dependency>
        <groupId>net.sourceforge.jexcelapi</groupId>
        <artifactId>jxl</artifactId>
        <version>2.6.9</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.9</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.9-20130819-ICap</version>
    </dependency>
    <!-- For Authorization -->
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${springversion}</version>
    </dependency>
            <dependency>
        <groupId>xalan</groupId>
        <artifactId>xalan</artifactId>
        <version>2.7.1</version>
    </dependency>
    <dependency>
        <groupId>net.sourceforge.jtds</groupId>
        <artifactId>jtds</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>wsdl4j</groupId>
        <artifactId>wsdl4j</artifactId>
        <version>1.6.3</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.woodstox</groupId>
        <artifactId>woodstox-core-asl</artifactId>
        <version>4.4.1</version>
    </dependency>
    <!--<dependency>
        <groupId>org.apache.ws.commons.schema</groupId>
        <artifactId>XmlSchema</artifactId>
        <version>1.4.5</version>
    </dependency>-->
    <!-- End Of Authentication and Authorization -->
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib-nodep</artifactId>
        <version>2.1_3</version>
    </dependency>
    <dependency>
        <groupId>org.samba.jcifs</groupId>
        <artifactId>jcifs</artifactId>
        <version>1.3.14-cname</version>
    </dependency>

    <!-- Primrose & its dependencies -->
    <dependency>
        <groupId>uk.org.primrose</groupId>
        <artifactId>primrose</artifactId>
        <version>2.7.0</version>
    </dependency>
    <dependency>
        <groupId>jmx</groupId>
        <artifactId>jmxremote</artifactId>
        <version>1.0.0</version>
    </dependency>
    <dependency>
        <groupId>jmx</groupId>
        <artifactId>jmxremote_optional</artifactId>
        <version>1.0.0</version>
    </dependency>
    <dependency>
        <groupId>jmx</groupId>
        <artifactId>jmxri</artifactId>
        <version>1.0.0</version>
    </dependency>
    <dependency>
        <groupId>jmx</groupId>
        <artifactId>jmxtools</artifactId>
        <version>1.0.0</version>
    </dependency>
    <!-- end -->
    <dependency>
        <groupId>com.sun</groupId>
        <artifactId>tools</artifactId>
        <version>1.5.0</version>
    </dependency>
    <dependency>
        <groupId>ant-contrib</groupId>
        <artifactId>ant-contrib</artifactId>
        <version>20020829</version>
        <optional>true</optional>
    </dependency>
    <!-- File upload related dependency -->
    <!-- Ensure compatible commons-io is used with commons-fileupload jar -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
    </dependency>
    <!-- required for hazelcast distributed session -->
    <dependency>
        <groupId>com.hazelcast</groupId>
        <artifactId>hazelcast-wm</artifactId>
        <version>4.0</version>
    </dependency>
</dependencies>

versions are as follows

spring boot : 2.7.11 struts 2-core : 2.5.30 tomcat-embed-jasper: 9.0.64

Issue Description:

After starting this application from intellij what i am seeing below error is coming and tomcat is not able to start

    caused by: java.lang.ClassNotFoundException: javax.servlet.jsp.JspWriter
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    ... 51 common frames omitted
[20240324 07:38:40.238 EDT (main) org.apache.catalina.core.StandardContext#filterStart SEVERE] Exception starting filter [struts2]
Unable to load configuration. - bean - jar:file:/home/srivastu/.m2/repository/org/apache/struts/struts2-core/2.5.30/struts2-core-2.5.30.jar!/struts-default.xml:130:150
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:509)

This is coming when struts filter is being initialized

at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:69)
at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:970)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:463)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:496)
at org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:73)
at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:61)

The filter is defined in web.xml as below:

<!-- Struts 2 configuration -->
<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>struts-default.xml,struts-plugin.xml,${fuma.module}-struts.xml</param-value>
    </init-param>
</filter>

due to this error the tomcat server is not coming up and failing everytime.

Please suggest what is missing here.

0

There are 0 best solutions below