Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring Boot : Correct the classpath of your application so that it contains a single, compatible version of javax.persistence.JoinTable

Problem Statement

I am receiving the following exception when I run my Spring Boot application.

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    org.hibernate.cfg.AnnotationBinder.bindJoinedTableAssociation(AnnotationBinder.java:2548)

The following method did not exist:

    javax.persistence.JoinTable.indexes()[Ljavax/persistence/Index;

The method's class, javax.persistence.JoinTable, is available from the following locations:

    jar:file:/C:/Users/Usuario/IdeaProjects/spring-security/lib/javax.persistence.jar!/javax/persistence/JoinTable.class
    jar:file:/C:/Users/Usuario/.m2/repository/jakarta/persistence/jakarta.persistence-api/2.2.3/jakarta.persistence-api-2.2.3.jar!/javax/persistence/JoinTable.class

The class hierarchy was loaded from the following locations:

    javax.persistence.JoinTable: file:/C:/Users/Usuario/IdeaProjects/spring-security/lib/javax.persistence.jar


Action:

Correct the classpath of your application so that it contains a single, compatible version of javax.persistence.JoinTable


Process finished with exit code 1

Below is the contents of my pom.xml file.

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>spring-security</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-security</name>
    <description>spring-security</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-springsecurity5</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>


        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>

        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

How to I remove one of the versions of javax.persistence.JoinTable?

like image 385
Kresnik Avatar asked Dec 05 '25 13:12

Kresnik


1 Answers

Multiple javax.persistence.JoinTable

The issue is most likely related to the duplicate javax.persistence.* libraries. I see you have the following two dependencies

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

Remove the org.springframework.data.spring-data-jpa dependency.

The org.springframework.boot.spring-boot-starter-data-jpa dependency already includes org.springframework.data.spring-data-jpa which is being added transitively.

Make sure to run a mvn clean before packaging and testing the new jar file

Non Maven lib directory

It also looks like there is a lib directory in your project that may have dependencies that are not managed by Maven. Please delete at least the javax.persistence library from that location

like image 148
Chris Maggiulli Avatar answered Dec 10 '25 18:12

Chris Maggiulli



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!