Search code examples
javaspringdrools

Drools Spring with Jasper Report is causing CompilationResult conflict


Below dependency is for jasperreport

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>3.7.2</version>
</dependency>

Above dependency causes inclusion of jdtcore jar inclusion.

Then I have below dependency for drools-spring

<dependency>
    <groupId>org.drools</groupId>
    <artifactId>drools-spring</artifactId>
    <version>5.6.0.Final</version>
</dependency>

This includes ecj jar.

Now ecj and jdtcore has java files org.eclipse.jdt.internal.compiler.CompilationResult with different versions and hence cause runtime exception.

How can I resolve these dependency conflict.


Solution

  • You either need to upgrade jasperreport version or if that's not possible then exclude the jdtcore and include the newer version of jdtcore as shown below:

    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
         <exclusions>
                  <exclusion>
                       <groupId>eclipse</groupId>
                        <artifactId>jdtcore</artifactId>
                  </exclusion>
          </exclusions>
    </dependency>
    
    <dependency>
        <groupId>eclipse</groupId>
        <artifactId>jdtcore</artifactId>
        <version>3.2.0.v_658</version>
    </dependency>
    

    After this exclude ecj jar from drools-spring

    <dependency>
        <groupId>org.drools</groupId>
        <artifactId>drools-spring</artifactId>
        <version>5.6.0.Final</version>
         <exclusions>
               <exclusion>
                   <groupId>org.eclipse.jdt.core.compiler</groupId>
                   <artifactId>ecj</artifactId>
                    </exclusion>
          </exclusions>
    </dependency>
    

    This will resolve the classes conflict