Camunda-engine maven dependency with Spring MVC dependency - Compatibility issue

Hello Team,
I am working on a project where I am developing Web application which is Spring MVC and having Camunda BPM to manage key business process.

I am facing maven dependency conflict while adding Camunda-engine maven dependency along with Spring MVC. getting following exception at run time.

15:00:46.792 [localhost-startStop-1] ERROR org.springframework.web.context.Conte
xtLoader - Context initialization failed
java.lang.NoClassDefFoundError: org/springframework/core/ErrorCoded
at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_102]
at java.lang.ClassLoader.defineClass(Unknown Source) ~[?:1.8.0_102]
at java.security.SecureClassLoader.defineClass(Unknown Source) ~[?:1.8.0
_102]

my pom dependency structure is as follows.

<dependencies>
  		<!-- camunda
		<dependency>
    	  <groupId>org.camunda.bpm</groupId>
    	  <artifactId>camunda-engine</artifactId>
          <version>7.8.0</version>
          <scope>provided</scope>
    	</dependency>
    	  
    	<dependency>
 	     <groupId>org.camunda.bpm</groupId>
 	     <artifactId>camunda-engine-spring</artifactId>
 	     <version>7.8.0</version>
  	  </dependency>
    -->
      <dependency>
	      <groupId>com.h2database</groupId>
	      <artifactId>h2</artifactId>
	      <version>1.3.171</version>
	  </dependency>
	  
 	  <dependency>
	      <groupId>org.slf4j</groupId>
	      <artifactId>slf4j-jdk14</artifactId>
 	      <version>1.7.13</version>
 	  </dependency>	
 	  
		<!-- Spring 
		<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-core</artifactId>
    		<version>${org.springframework-version}</version>
 		</dependency>
 		-->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
		
		<dependency>
      		<groupId>org.springframework</groupId>
      		<artifactId>spring-web</artifactId>
      		<version>${org.springframework-version}</version>
    	</dependency>
    
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>

		<!-- Spring Security (used for CSRF protection only) -->
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-web</artifactId>
			<version>5.0.0.RELEASE</version>
		</dependency>

		<!-- AspectJ -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${org.aspectj-version}</version>
		</dependency>
		
		<!-- Logging -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<version>LATEST</version>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-slf4j-impl</artifactId>
			<version>LATEST</version>
		</dependency>

		<!-- @Inject -->
		<dependency>
			<groupId>javax.inject</groupId>
			<artifactId>javax.inject</artifactId>
			<version>1</version>
		</dependency>
				
		<!-- Servlet API -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>javax.servlet.jsp-api</artifactId>
			<version>2.3.2-b02</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<!-- Jackson JSON Processor -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.9.3</version>
		</dependency>

		<!-- Rome Atom+RSS -->
		<dependency>
			<groupId>com.rometools</groupId>
			<artifactId>rome</artifactId>
			<version>1.9.0</version>
		</dependency>
		
		<!-- JSR 303 with Hibernate Validator -->
		<dependency>
			<groupId>javax.validation</groupId>
			<artifactId>validation-api</artifactId>
			<version>2.0.1.Final</version>
		</dependency>
		<dependency>
			<groupId>org.hibernate.validator</groupId>
			<artifactId>hibernate-validator</artifactId>
			<version>6.0.7.Final</version>
		</dependency>
		<dependency>
			<groupId>javax.el</groupId>
			<artifactId>javax.el-api</artifactId>
			<version>3.0.1-b04</version>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.el</artifactId>
			<version>3.0.1-b08</version>
		</dependency>

		<!-- Joda Time Library -->
		<dependency>
			<groupId>joda-time</groupId>
			<artifactId>joda-time</artifactId>
			<version>2.9.9</version>
		</dependency>

		<!-- File Upload -->
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.3</version>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.5</version>
		</dependency>		
	</dependencies>

Hi @jigneshpurohit,

what is the value of ${org.springframework-version} ?

Can you uncomment Camunda dependencies and post here result of mvn dependency:tree command?

Svetlana

Thanks for your response and highly appreciate your quick support.

The value of ${org.springframework-version} is 5.0.3.RELEASE. attached is my POM.

The output of mvn dependency:tree is as follows

D:\MyData\ksk_poc_code\Spring_samples\spring-mvc-showcase>mvn dependency:tree
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for
org.springframework.samples:spring-mvc-showcase:war:1.0.0-BUILD-SNAPSHOT
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-war-
plugin is missing. @ line 203, column 12
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten t
he stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support buildin
g such malformed projects.
[WARNING]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building spring-mvc-showcase 1.0.0-BUILD-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j
-core/maven-metadata.xml
Downloaded: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-
core/maven-metadata.xml (1.4 kB at 241 B/s)
Downloading: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j
-core/2.11.0/log4j-core-2.11.0.pom
Downloaded: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-
core/2.11.0/log4j-core-2.11.0.pom (23 kB at 36 kB/s)
Downloading: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j
/2.11.0/log4j-2.11.0.pom
Downloaded: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j/
2.11.0/log4j-2.11.0.pom (59 kB at 80 kB/s)
Downloading: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j
-api/2.11.0/log4j-api-2.11.0.pom
Downloaded: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-
api/2.11.0/log4j-api-2.11.0.pom (14 kB at 24 kB/s)
Downloading: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j
-slf4j-impl/maven-metadata.xml
Downloaded: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-
slf4j-impl/maven-metadata.xml (1.2 kB at 1.7 kB/s)
Downloading: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j
-slf4j-impl/2.11.0/log4j-slf4j-impl-2.11.0.pom
Downloaded: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-
slf4j-impl/2.11.0/log4j-slf4j-impl-2.11.0.pom (7.7 kB at 14 kB/s)
Downloading: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j
-core/2.11.0/log4j-core-2.11.0.jar
Downloading: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j
-api/2.11.0/log4j-api-2.11.0.jar
Downloading: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j
-slf4j-impl/2.11.0/log4j-slf4j-impl-2.11.0.jar
Downloaded: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-
slf4j-impl/2.11.0/log4j-slf4j-impl-2.11.0.jar (24 kB at 24 kB/s)
Downloaded: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-
api/2.11.0/log4j-api-2.11.0.jar (263 kB at 217 kB/s)
Downloaded: https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-
core/2.11.0/log4j-core-2.11.0.jar (1.6 MB at 611 kB/s)
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ spring-mvc-showcase
---
[INFO] org.springframework.samples:spring-mvc-showcase:war:1.0.0-BUILD-SNAPSHOT
[INFO] +- org.camunda.bpm:camunda-engine:jar:7.8.0:provided
[INFO] |  +- org.camunda.bpm.model:camunda-bpmn-model:jar:7.8.0:provided
[INFO] |  |  \- org.camunda.bpm.model:camunda-xml-model:jar:7.8.0:provided
[INFO] |  +- org.camunda.bpm.model:camunda-cmmn-model:jar:7.8.0:provided
[INFO] |  +- org.camunda.bpm.dmn:camunda-engine-dmn:jar:7.8.0:provided
[INFO] |  |  +- org.camunda.commons:camunda-commons-utils:jar:1.4.0:provided
[INFO] |  |  +- org.camunda.bpm.model:camunda-dmn-model:jar:7.8.0:provided
[INFO] |  |  +- org.camunda.bpm.dmn:camunda-engine-feel-api:jar:7.8.0:provided
[INFO] |  |  \- org.camunda.bpm.dmn:camunda-engine-feel-juel:jar:7.8.0:provided
[INFO] |  +- org.camunda.commons:camunda-commons-logging:jar:1.4.0:provided
[INFO] |  +- org.camunda.commons:camunda-commons-typed-values:jar:1.4.0:provided

[INFO] |  +- org.apache.commons:commons-email:jar:1.2:provided
[INFO] |  |  +- javax.mail:mail:jar:1.4.1:provided
[INFO] |  |  \- javax.activation:activation:jar:1.1:provided
[INFO] |  +- org.mybatis:mybatis:jar:3.4.4:provided
[INFO] |  \- org.springframework:spring-beans:jar:3.1.2.RELEASE:compile
[INFO] +- org.camunda.bpm:camunda-engine-spring:jar:7.8.0:compile
[INFO] |  +- org.springframework:spring-jdbc:jar:3.1.2.RELEASE:compile
[INFO] |  +- org.springframework:spring-tx:jar:3.1.2.RELEASE:compile
[INFO] |  |  \- aopalliance:aopalliance:jar:1.0:compile
[INFO] |  +- commons-lang:commons-lang:jar:2.4:compile
[INFO] |  +- org.springframework:spring-orm:jar:3.1.2.RELEASE:compile
[INFO] |  \- commons-dbcp:commons-dbcp:jar:1.4:compile
[INFO] |     \- commons-pool:commons-pool:jar:1.5.4:compile
[INFO] +- com.h2database:h2:jar:1.3.171:compile
[INFO] +- org.slf4j:slf4j-jdk14:jar:1.7.13:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.13:compile<a class="attachment" href="/uploads/default/original/2X/9/96b4f611d58830c07772e458ba66273ce4acaaf7.xml">pom.xml</a> (7.6 KB)

[INFO] +- org.springframework:spring-context:jar:5.0.3.RELEASE:compile
[INFO] |  +- org.springframework:spring-aop:jar:5.0.3.RELEASE:compile
[INFO] |  +- org.springframework:spring-core:jar:5.0.3.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-jcl:jar:5.0.3.RELEASE:compile
[INFO] |  \- org.springframework:spring-expression:jar:5.0.3.RELEASE:compile
[INFO] +- org.springframework:spring-web:jar:5.0.3.RELEASE:compile
[INFO] +- org.springframework:spring-webmvc:jar:5.0.3.RELEASE:compile
[INFO] +- org.springframework.security:spring-security-web:jar:5.0.0.RELEASE:com
pile
[INFO] |  \- org.springframework.security:spring-security-core:jar:5.0.0.RELEASE
:compile
[INFO] +- org.aspectj:aspectjrt:jar:1.8.1:compile
[INFO] +- org.apache.logging.log4j:log4j-core:jar:2.11.0:compile
[INFO] |  \- org.apache.logging.log4j:log4j-api:jar:2.11.0:compile
[INFO] +- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.11.0:compile
[INFO] +- javax.inject:javax.inject:jar:1:compile
[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided
[INFO] +- javax.servlet.jsp:javax.servlet.jsp-api:jar:2.3.2-b02:provided
[INFO] +- javax.servlet:jstl:jar:1.2:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.3:compile
[INFO] |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile
[INFO] |  \- com.fasterxml.jackson.core:jackson-core:jar:2.9.3:compile
[INFO] +- com.rometools:rome:jar:1.9.0:compile
[INFO] |  +- com.rometools:rome-utils:jar:1.9.0:compile
[INFO] |  \- org.jdom:jdom2:jar:2.0.6:compile
[INFO] +- javax.validation:validation-api:jar:2.0.1.Final:compile
[INFO] +- org.hibernate.validator:hibernate-validator:jar:6.0.7.Final:compile
[INFO] |  +- org.jboss.logging:jboss-logging:jar:3.3.0.Final:compile
[INFO] |  \- com.fasterxml:classmate:jar:1.3.1:compile
[INFO] +- javax.el:javax.el-api:jar:3.0.1-b04:compile
[INFO] +- org.glassfish:javax.el:jar:3.0.1-b08:compile
[INFO] +- joda-time:joda-time:jar:2.9.9:compile
[INFO] +- commons-fileupload:commons-fileupload:jar:1.3.3:compile
[INFO] \- commons-io:commons-io:jar:2.5:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 23.687 s
[INFO] Finished at: 2018-03-16T17:44:11+05:30
[INFO] Final Memory: 17M/133M
[INFO] ------------------------------------------------------------------------

Hello Svetlana,

I have already reply to your follow up so kindly check my post. It seems due to some filter criteria, I am not able to send the details into mail.

Thanks and Regards,

Hi @jigneshpurohit,
in dependency tree you can see, that you have Spring dependencies of two versions. Some are coming from camunda-engine-spring dependency:

[INFO] |  +- org.springframework:spring-jdbc:jar:3.1.2.RELEASE:compile
[INFO] |  +- org.springframework:spring-tx:jar:3.1.2.RELEASE:compile
[INFO] |  |  \- aopalliance:aopalliance:jar:1.0:compile
[INFO] |  +- commons-lang:commons-lang:jar:2.4:compile
[INFO] |  +- org.springframework:spring-orm:jar:3.1.2.RELEASE:compile

Others included directly in your POM:

[INFO] +- org.springframework:spring-context:jar:5.0.3.RELEASE:compile
[INFO] |  +- org.springframework:spring-aop:jar:5.0.3.RELEASE:compile
[INFO] |  +- org.springframework:spring-core:jar:5.0.3.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-jcl:jar:5.0.3.RELEASE:compile
[INFO] |  \- org.springframework:spring-expression:jar:5.0.3.RELEASE:compile
[INFO] +- org.springframework:spring-web:jar:5.0.3.RELEASE:compile
[INFO] +- org.springframework:spring-webmvc:jar:5.0.3.RELEASE:compile
[INFO] +- org.springframework.security:spring-security-web:jar:5.0.0.RELEASE:com
pile
[INFO] |  \- org.springframework.security:spring-security-core:jar:5.0.0.RELEASE
:compile

This won’t work. You have two ways:

  1. Use in your dependencies the same version that Camunda is using: 3.1.2.RELEASE
  2. Exclude Spring transitive dependencies from camunda-engine-spring, and include them manually of version 5.0.3.RELEASE., but no guarantees that Camunda will run on this version

Hello Svetlana,

Thanks for your response.

Can you please let me know on which spring latest version, Camunda will run?

Thanks and Regards,

As far as I know, we don’t plan to update Spring dependency for camunda-engine-spring project for v. 7.9.

You can though consider using Spring Boot integration, which must rely on Spring Boot 2 for Camunda 7.9, which in turn is using Spring 4.