I have here an Application that uses Spring Boot 3.1 and Apache Struts 7.0.0-M8. I just can't get them to run as the Java classloader persistently tries to load the javax. HttpServletRequest
instead instead of the Jakarta Servlet.
I debugged the code, upgraded dependencies,
checked for any usages. Multiple times deleted my gradle cache and invalidated my IntelliJ cache.
Where is that call even coming from? The only hunch I have is that none is loaded and it defaults to javax
which it can't find. But if that is the case should I make it available on start up in my spring-boot configuration?
What can I do?
annotationProcessor - Annotation processors and their dependencies for source set 'main'.
+--- org.springframework.boot:spring-boot-configuration-processor:3.3.1
\--- org.projectlombok:lombok:1.18.30
bootArchives - Configuration for Spring Boot archive artifacts. (n)
No dependencies
compileClasspath - Compile classpath for source set 'main'.
+--- jakarta.servlet:jakarta.servlet-api:6.1.0
+--- org.springframework.boot:spring-boot-dependencies:3.3.1
+--- org.ow2.asm:asm:9.7
+--- jakarta.el:jakarta.el-api:6.0.0
+--- jakarta.xml.bind:jakarta.xml.bind-api:4.0.2
| \--- jakarta.activation:jakarta.activation-api:2.1.3
+--- jakarta.annotation:jakarta.annotation-api:3.0.0
+--- org.glassfish.jaxb:jaxb-runtime:4.0.5
| \--- org.glassfish.jaxb:jaxb-core:4.0.5
| +--- jakarta.xml.bind:jakarta.xml.bind-api:4.0.2 (*)
| +--- jakarta.activation:jakarta.activation-api:2.1.3
| +--- org.glassfish.jaxb:txw2:4.0.5
| \--- com.sun.istack:istack-commons-runtime:4.1.2
+--- jakarta.activation:jakarta.activation-api:2.1.3
+--- org.springframework:spring-core:6.1.11
| \--- org.springframework:spring-jcl:6.1.11 -> 6.1.10
+--- org.springframework.boot:spring-boot-starter-web:3.3.1
| +--- org.springframework.boot:spring-boot-starter:3.3.1
| | +--- org.springframework.boot:spring-boot:3.3.1
| | | +--- org.springframework:spring-core:6.1.10 -> 6.1.11 (*)
| | | \--- org.springframework:spring-context:6.1.10
| | | +--- org.springframework:spring-aop:6.1.10
| | | | +--- org.springframework:spring-beans:6.1.10
| | | | | \--- org.springframework:spring-core:6.1.10 -> 6.1.11 (*)
| | | | \--- org.springframework:spring-core:6.1.10 -> 6.1.11 (*)
| | | +--- org.springframework:spring-beans:6.1.10 (*)
| | | +--- org.springframework:spring-core:6.1.10 -> 6.1.11 (*)
| | | +--- org.springframework:spring-expression:6.1.10
| | | | \--- org.springframework:spring-core:6.1.10 -> 6.1.11 (*)
| | | \--- io.micrometer:micrometer-observation:1.12.7 -> 1.13.1
| | | \--- io.micrometer:micrometer-commons:1.13.1
| | +--- org.springframework.boot:spring-boot-autoconfigure:3.3.1
| | | \--- org.springframework.boot:spring-boot:3.3.1 (*)
| | +--- org.springframework.boot:spring-boot-starter-logging:3.3.1
| | | +--- ch.qos.logback:logback-classic:1.5.6
| | | | +--- ch.qos.logback:logback-core:1.5.6
| | | | \--- org.slf4j:slf4j-api:2.0.13
| | | +--- org.apache.logging.log4j:log4j-to-slf4j:2.23.1
| | | | +--- org.apache.logging.log4j:log4j-api:2.23.1 -> 2.23.0
| | | | \--- org.slf4j:slf4j-api:2.0.9 -> 2.0.13
| | | \--- org.slf4j:jul-to-slf4j:2.0.13
| | | \--- org.slf4j:slf4j-api:2.0.13
| | +--- jakarta.annotation:jakarta.annotation-api:2.1.1 -> 3.0.0
| | +--- org.springframework:spring-core:6.1.10 -> 6.1.11 (*)
| | \--- org.yaml:snakeyaml:2.2
| +--- org.springframework.boot:spring-boot-starter-json:3.3.1
| | +--- org.springframework.boot:spring-boot-starter:3.3.1 (*)
| | +--- org.springframework:spring-web:6.1.10
| | | +--- org.springframework:spring-beans:6.1.10 (*)
| | | +--- org.springframework:spring-core:6.1.10 -> 6.1.11 (*)
| | | \--- io.micrometer:micrometer-observation:1.12.7 -> 1.13.1 (*)
| | +--- com.fasterxml.jackson.core:jackson-databind:2.17.1
| | | +--- com.fasterxml.jackson.core:jackson-annotations:2.17.1
| | | | \--- com.fasterxml.jackson:jackson-bom:2.17.1
| | | | +--- com.fasterxml.jackson.core:jackson-annotations:2.17.1 (c)
| | | | +--- com.fasterxml.jackson.core:jackson-core:2.17.1 (c)
| | | | +--- com.fasterxml.jackson.core:jackson-databind:2.17.1 (c)
| | | | +--- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.17.1 (c)
| | | | +--- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.17.1 (c)
| | | | \--- com.fasterxml.jackson.module:jackson-module-parameter-names:2.17.1 (c)
| | | +--- com.fasterxml.jackson.core:jackson-core:2.17.1
| | | | \--- com.fasterxml.jackson:jackson-bom:2.17.1 (*)
| | | \--- com.fasterxml.jackson:jackson-bom:2.17.1 (*)
| | +--- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.17.1
| | | +--- com.fasterxml.jackson.core:jackson-core:2.17.1 (*)
| | | +--- com.fasterxml.jackson.core:jackson-databind:2.17.1 (*)
| | | \--- com.fasterxml.jackson:jackson-bom:2.17.1 (*)
| | +--- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.17.1
| | | +--- com.fasterxml.jackson.core:jackson-annotations:2.17.1 (*)
| | | +--- com.fasterxml.jackson.core:jackson-core:2.17.1 (*)
| | | +--- com.fasterxml.jackson.core:jackson-databind:2.17.1 (*)
| | | \--- com.fasterxml.jackson:jackson-bom:2.17.1 (*)
| | \--- com.fasterxml.jackson.module:jackson-module-parameter-names:2.17.1
| | +--- com.fasterxml.jackson.core:jackson-core:2.17.1 (*)
| | +--- com.fasterxml.jackson.core:jackson-databind:2.17.1 (*)
| | \--- com.fasterxml.jackson:jackson-bom:2.17.1 (*)
| +--- org.springframework.boot:spring-boot-starter-tomcat:3.3.1
| | +--- jakarta.annotation:jakarta.annotation-api:2.1.1 -> 3.0.0
| | +--- org.apache.tomcat.embed:tomcat-embed-core:10.1.25
| | +--- org.apache.tomcat.embed:tomcat-embed-el:10.1.25
| | \--- org.apache.tomcat.embed:tomcat-embed-websocket:10.1.25
| | \--- org.apache.tomcat.embed:tomcat-embed-core:10.1.25
| +--- org.springframework:spring-web:6.1.10 (*)
| \--- org.springframework:spring-webmvc:6.1.10
| +--- org.springframework:spring-aop:6.1.10 (*)
| +--- org.springframework:spring-beans:6.1.10 (*)
| +--- org.springframework:spring-context:6.1.10 (*)
| +--- org.springframework:spring-core:6.1.10 -> 6.1.11 (*)
| +--- org.springframework:spring-expression:6.1.10 (*)
| \--- org.springframework:spring-web:6.1.10 (*)
+--- org.springframework.boot:spring-boot-starter-tomcat:3.3.1 (*)
+--- org.glassfish.web:jakarta.servlet.jsp.jstl:3.0.1
+--- jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:3.0.0
| +--- jakarta.servlet:jakarta.servlet-api:6.0.0 -> 6.1.0
| \--- jakarta.el:jakarta.el-api:5.0.0 -> 6.0.0
+--- org.apache.tomcat.embed:tomcat-embed-jasper:10.1.25
| +--- org.apache.tomcat.embed:tomcat-embed-core:10.1.25
| +--- org.apache.tomcat.embed:tomcat-embed-el:10.1.25
| \--- org.eclipse.jdt:ecj:3.33.0
+--- org.apache.logging.log4j:log4j-api:2.23.0
+--- org.apache.logging.log4j:log4j-core:2.23.1
| \--- org.apache.logging.log4j:log4j-api:2.23.1 -> 2.23.0
+--- org.apache.struts:struts2-core:7.0.0-M8
| +--- org.freemarker:freemarker:2.3.33
| +--- com.github.ben-manes.caffeine:caffeine:3.1.8
| | +--- org.checkerframework:checker-qual:3.37.0
| | \--- com.google.errorprone:error_prone_annotations:2.21.1 -> 2.27.0
| +--- ognl:ognl:3.3.5
| | \--- org.javassist:javassist:3.29.0-GA
| +--- org.apache.logging.log4j:log4j-api:2.23.1 -> 2.23.0
| +--- org.apache.commons:commons-fileupload2-jakarta-servlet6:2.0.0-M2
| | +--- org.apache.commons:commons-fileupload2-core:2.0.0-M2
| | | \--- commons-io:commons-io:2.15.1
| | \--- commons-io:commons-io:2.15.1
| +--- commons-io:commons-io:2.15.1
| +--- org.apache.commons:commons-lang3:3.14.0
| \--- org.apache.commons:commons-text:1.12.0
| \--- org.apache.commons:commons-lang3:3.14.0
+--- com.jgeppert.struts2.jquery:struts2-jquery-tree-plugin:5.0.4
| +--- com.jgeppert.struts2.jquery:struts2-jquery-plugin:5.0.4
| | +--- org.apache.struts:struts-annotations:1.0.8
| | | \--- org.freemarker:freemarker:2.3.31 -> 2.3.33
| | +--- org.apache.struts:struts2-core:6.4.0 -> 7.0.0-M8 (*)
| | \--- org.apache.struts:struts2-velocity-plugin:6.4.0 -> 7.0.0-M8
| | +--- org.apache.velocity:velocity-engine-core:2.3
| | | +--- org.apache.commons:commons-lang3:3.11 -> 3.14.0
| | | \--- org.slf4j:slf4j-api:1.7.30 -> 2.0.13
| | +--- org.apache.struts:struts2-velocity-tools-view-jakarta:7.0.0-M8
| | \--- org.apache.struts:struts2-velocity-tools-jsp-jakarta:7.0.0-M8
| | \--- org.apache.velocity.tools:velocity-tools-generic:3.1
| | +--- org.apache.velocity:velocity-engine-core:2.3 (*)
| | +--- commons-beanutils:commons-beanutils:1.9.4
| | | \--- commons-collections:commons-collections:3.2.2
| | +--- org.apache.commons:commons-digester3:3.2
| | | \--- commons-beanutils:commons-beanutils:1.8.3 -> 1.9.4 (*)
| | +--- org.apache.commons:commons-lang3:3.10 -> 3.14.0
| | +--- org.slf4j:slf4j-api:1.7.30 -> 2.0.13
| | \--- com.github.cliftonlabs:json-simple:3.0.2
| +--- org.apache.struts:struts-annotations:1.0.8 (*)
| +--- org.apache.struts:struts2-core:6.4.0 -> 7.0.0-M8 (*)
| +--- org.apache.struts:struts2-velocity-plugin:6.4.0 -> 7.0.0-M8 (*)
| \--- commons-beanutils:commons-beanutils:1.9.4 (*)
+--- org.apache.struts:struts2-json-plugin:7.0.0-M8
+--- org.apache.struts:struts2-spring-plugin:7.0.0-M8
| +--- org.springframework:spring-beans:6.0.13 -> 6.1.10 (*)
| +--- org.springframework:spring-core:6.0.13 -> 6.1.11 (*)
| +--- org.springframework:spring-context:6.0.13 -> 6.1.10 (*)
| \--- org.springframework:spring-web:6.0.13 -> 6.1.10 (*)
+--- org.apache.struts:struts2-config-browser-plugin:7.0.0-M8
| \--- org.apache.struts:struts2-velocity-plugin:7.0.0-M8 (*)
+--- commons-net:commons-net:3.11.1
+--- org.apache.commons:commons-lang3:3.14.0
+--- org.apache.commons:commons-text:1.12.0 (*)
+--- com.google.code.gson:gson:2.11.0
| \--- com.google.errorprone:error_prone_annotations:2.27.0
+--- org.bouncycastle:bcprov-jdk18on:1.78.1
+--- com.thoughtworks.xstream:xstream:1.4.20
| \--- io.github.x-stream:mxparser:1.2.2
| \--- xmlpull:xmlpull:1.1.3.1
+--- org.springframework.boot:spring-boot-starter-websocket:3.3.1
| +--- org.springframework.boot:spring-boot-starter-web:3.3.1 (*)
| +--- org.springframework:spring-messaging:6.1.10 -> 6.1.11
| | +--- org.springframework:spring-beans:6.1.11 -> 6.1.10 (*)
| | \--- org.springframework:spring-core:6.1.11 (*)
| \--- org.springframework:spring-websocket:6.1.10 -> 6.1.11
| +--- org.springframework:spring-context:6.1.11 -> 6.1.10 (*)
| +--- org.springframework:spring-core:6.1.11 (*)
| \--- org.springframework:spring-web:6.1.11 -> 6.1.10 (*)
+--- org.springframework:spring-websocket:6.1.11 (*)
+--- org.springframework:spring-messaging:6.1.11 (*)
\--- org.projectlombok:lombok:1.18.30
com.opensymphony.xwork2.config.ConfigurationException: Caught Exception while registering Interceptor class org.apache.struts2.interceptor.debugging.DebuggingInterceptor
at com.opensymphony.xwork2.factory.DefaultInterceptorFactory.buildInterceptor(DefaultInterceptorFactory.java:97) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.ObjectFactory.buildInterceptor(ObjectFactory.java:210) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.config.providers.InterceptorBuilder.constructInterceptorReference(InterceptorBuilder.java:73) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.config.providers.XmlDocConfigurationProvider.lookupInterceptorReference(XmlDocConfigurationProvider.java:1005) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at
..........
com.opensymphony.xwork2.factory.DefaultInterceptorFactory.buildInterceptor(DefaultInterceptorFactory.java:65) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
... 68 common frames omitted
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:161) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:53) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl$ParameterInjector.inject(ContainerImpl.java:461) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl.getParameters(ContainerImpl.java:475) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:302) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
... 78 common frames omitted
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:492) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl.lambda$inject$3(ContainerImpl.java:526) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:567) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:526) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.config.impl.LocatableFactory.create(LocatableFactory.java:50) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:159) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
... 82 common frames omitted
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:304) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:435) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:490) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
... 87 common frames omitted
Caused by: java.lang.reflect.InvocationTargetException: null
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:302) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
... 89 common frames omitted
Caused by: java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
at java.base/java.lang.Class.getDeclaredMethods0(Native Method) ~[na:na]
at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3601) ~[na:na]
at java.base/java.lang.Class.getDeclaredMethods(Class.java:2686) ~[na:na]
at com.opensymphony.xwork2.inject.ContainerImpl.addInjectors(ContainerImpl.java:101) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl$1.create(ContainerImpl.java:82) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl$1.create(ContainerImpl.java:78) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.util.ReferenceCache$CallableCreate.call(ReferenceCache.java:155) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na]
at com.opensymphony.xwork2.inject.util.ReferenceCache.internalCreate(ReferenceCache.java:79) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.util.ReferenceCache.get(ReferenceCache.java:123) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.<init>(ContainerImpl.java:357) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl$2.create(ContainerImpl.java:312) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl$2.create(ContainerImpl.java:309) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.util.ReferenceCache$CallableCreate.call(ReferenceCache.java:155) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na]
at com.opensymphony.xwork2.inject.util.ReferenceCache.internalCreate(ReferenceCache.java:79) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.util.ReferenceCache.get(ReferenceCache.java:123) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl.getConstructor(ContainerImpl.java:580) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:489) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl.lambda$inject$3(ContainerImpl.java:526) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:567) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:526) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.config.impl.LocatableFactory.create(LocatableFactory.java:50) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:159) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:53) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:503) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl.lambda$getInstance$4(ContainerImpl.java:531) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:567) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:531) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at org.apache.struts2.views.freemarker.FreemarkerManager.setContainer(FreemarkerManager.java:235) ~[struts2-core-7.0.0-M8.jar:7.0.0-M8]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
... 91 common frames omitted
Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na]
... 122 common frames omitted
buildscript {
repositories {
mavenCentral()
google()
gradlePluginPortal()
}
dependencies {
}
}
plugins {
id 'java'
id 'war'
id 'org.springframework.boot' version "${springBootVersion}"
id 'io.spring.dependency-management' version '1.1.6'
id 'com.github.andygoossens.modernizer' version "${modernizerPluginVersion}"
id 'io.freefair.lombok' version "8.6"
}
repositories {
mavenCentral()
maven {
url "https://repository.apache.org/content/groups/staging/"
}
}
configurations.all {
resolutionStrategy {
force 'org.ow2.asm:asm:9.7'
}
exclude group:"commons-logging", module:"commons-logging"
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(22)
}
}
if (project.hasProperty("prod") || project.hasProperty("gae")) {
apply from: "gradle/profile_prod.gradle"
} else {
apply from: "gradle/profile_dev.gradle"
}
group = "de.tas.cofusim.app"
version = "5.3.1-SNAPSHOT"
//version = "5.3.0-RC"
//version = "5.3.0"
dependencies {
implementation 'org.ow2.asm:asm:9.7'
compileOnly 'jakarta.servlet:jakarta.servlet-api:6.1.0'
implementation 'jakarta.el:jakarta.el-api:6.0.0'
implementation 'jakarta.xml.bind:jakarta.xml.bind-api:4.0.2'
implementation 'jakarta.annotation:jakarta.annotation-api:3.0.0'
implementation 'org.glassfish.jaxb:jaxb-runtime:4.0.5'
implementation 'jakarta.activation:jakarta.activation-api:2.1.3'
// Spring Boot & Framework
compileOnly "org.springframework.boot:spring-boot-dependencies:${springBootVersion}"
implementation "org.springframework:spring-core:${springFrameWork}"
annotationProcessor "org.springframework.boot:spring-boot-configuration-processor:${springBootVersion}"
implementation "org.springframework.boot:spring-boot-starter-web:${springBootVersion}"
implementation "org.springframework.boot:spring-boot-starter-tomcat:${springBootVersion}"
// JSP and jasper for embedded tomcat
implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl:3.0.1'
implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:3.0.0'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper:10.1.25'
implementation 'org.apache.logging.log4j:log4j-api:2.23.0'
implementation 'org.apache.logging.log4j:log4j-core:2.23.1'
// Apache Struts
implementation "org.apache.struts:struts2-core:${strutsVersion}"
implementation 'com.jgeppert.struts2.jquery:struts2-jquery-tree-plugin:5.0.4'
implementation "org.apache.struts:struts2-json-plugin:${strutsVersion}"
implementation "org.apache.struts:struts2-spring-plugin:${strutsVersion}"
implementation "org.apache.struts:struts2-config-browser-plugin:${strutsVersion}"
testImplementation "org.apache.struts:struts2-junit-plugin:${strutsVersion}"
implementation 'commons-net:commons-net:3.11.1'
implementation 'org.apache.commons:commons-lang3:3.14.0'
implementation 'org.apache.commons:commons-text:1.12.0'
implementation 'com.google.code.gson:gson:2.11.0'
implementation 'org.bouncycastle:bcprov-jdk18on:1.78.1'
implementation 'com.thoughtworks.xstream:xstream:1.4.20'
testImplementation "org.springframework.boot:spring-boot-starter-test:${springBootVersion}"
testImplementation "org.springframework.boot:spring-boot-test:${springBootVersion}"
testImplementation 'org.mockito:mockito-inline:5.2.0'
implementation "org.springframework.boot:spring-boot-starter-websocket:${springBootVersion}"
implementation "org.springframework:spring-websocket:${springFrameWork}"
implementation "org.springframework:spring-messaging:${springFrameWork}"
}
springBoot {
mainClass = "de.tas.cofusim.webapp.CoFuSimApp"
}
defaultTasks "bootRun"
bootRun
{
enableAssertions = true
}
compileJava.options.encoding = "UTF-8"
compileTestJava {
options.encoding = "UTF-8"
options.compilerArgs.add("-Xlint:deprecation")
}
test {
useJUnitPlatform()
exclude "**/*IT*", "**/*IntTest*"
testLogging {
events 'FAILED', 'SKIPPED'
}
reports.html.required = true
}
springBootVersion=3.3.1
springFrameWork=6.1.11
strutsVersion=7.0.0-M8
modernizerPluginVersion=1.9.2
profile=dev
You have dependency on struts2-jquery-tree-plugin
.
implementation 'com.jgeppert.struts2.jquery:struts2-jquery-tree-plugin:5.0.4'
It is still not compatible with Struts 7. See the issue Support of Struts 7 #470.