Spring boot javax.persistence和jakarta.persistence类路径错误

Spring boot javax.persistence和jakarta.persistence类路径错误,spring-boot,maven,Spring Boot,Maven,我有一个使用jpa和olingo的springboot项目。它在本地正常运行以进行测试,但当我创建一个war文件并运行它时,有时会出现此错误 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(Annotati

我有一个使用jpa和olingo的springboot项目。它在本地正常运行以进行测试,但当我创建一个war文件并运行它时,有时会出现此错误

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:2531)

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:/usr/sap/ljs/webapps/spring-boot-doeapis-0.0.1-SNAPSHOT/WEB-INF/lib/javax.persistence-2.0.5.jar!/javax/persistence/JoinTable.class
jar:file:/usr/sap/ljs/webapps/spring-boot-doeapis-0.0.1-SNAPSHOT/WEB-INF/lib/jakarta.persistence-api-2.2.3.jar!/javax/persistence/JoinTable.class

It was loaded from the following location:

file:/usr/sap/ljs/webapps/spring-boot-doeapis-0.0.1-SNAPSHOT/WEB-INF/lib/javax.persistence-2.0.5.jar


Action:

Correct the classpath of your application so that it contains a single, compatible version of javax.persistence.JoinTable
现在我试图找出我正在使用的库中哪一个正在下载javax.persistence或jakarata.persistence,这样我就可以尝试阻止它下载。如果有帮助的话,我会用Maven

<?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.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <m2eclipse.wtp.contextRoot>/</m2eclipse.wtp.contextRoot>
        <olingo2.version>2.0.11</olingo2.version>
        <sap.cloud.sdk.version>3.99.14</sap.cloud.sdk.version>
    </properties>

    <groupId>gov.doe.ph</groupId>
    <artifactId>spring-boot-doeapis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-boot-doeapis</name>
    <description>Doe project for Spring Boot</description>
    <packaging>war</packaging>

    <!--properties>
        <java.version>1.8</java.version>
        <olingo2.version>2.0.11</olingo2.version>
    </properties-->

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-spring-service-connector</artifactId>
            <version>1.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-cloudfoundry-connector</artifactId>
            <version>1.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-devtools</artifactId>
          <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <!--exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.tomcat.embed</groupId>
                    <artifactId>tomcat-embed-el</artifactId>
                </exclusion-->
                <exclusion>
                    <artifactId>logback-classic</artifactId>
                    <groupId>ch.qos.logback</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.sap.cloud</groupId>
            <artifactId>neo-java-web-sdk</artifactId>
            <version>${sap.cloud.sdk.version}</version>
            <type>pom</type>
            <scope>provided</scope>
        </dependency>
        <!--dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
         <!-- Olingo 2 Dependencies -->
        <dependency>
            <groupId>org.apache.olingo</groupId>
            <artifactId>olingo-odata2-core</artifactId>
            <version>${olingo2.version}</version>
            <!-- Avoid jax-rs version conflict by excluding Olingo's version -->
            <exclusions>
                <exclusion>
                    <groupId>javax.ws.rs</groupId>
                    <artifactId>javax.ws.rs-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.olingo</groupId>
            <artifactId>olingo-odata2-jpa-processor-core</artifactId>
            <version>${olingo2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.olingo</groupId>
            <artifactId>olingo-odata2-jpa-processor-ref</artifactId>
            <version>${olingo2.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.eclipse.persistence</groupId>
                    <artifactId>eclipselink</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-server -->
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-server</artifactId>
            <version>2.26</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
        <!-- <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.1</version>
        </dependency> -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jersey</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <!--dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.25</version>
        </dependency-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core -->
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>5.2.1.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 For unable to acquire JDBC connection error-->
        <!--dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency-->
        <!--dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-c3p0</artifactId>
            <version>5.4.20.Final</version>
        </dependency-->
    </dependencies>

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

            <!--plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.3</version>
                <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                    <goal>shade</goal>
                    </goals>
                    <configuration>
                    <relocations>
                        <relocation>
                        <pattern>org.apache.olingo.odata2.core.rest.ODataExceptionMapperImpl</pattern>
                        <shadedPattern>org.shaded.plexus.util</shadedPattern>
                        </relocation>
                    </relocations>
                    </configuration>
                </execution>
                </executions>
            </plugin-->
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>cf</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <packaging.type>jar</packaging.type>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                    <scope>provided</scope>
                </dependency>
            </dependencies>
        </profile>

        <profile>
            <id>neo</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <packaging.type>war</packaging.type>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                    <scope>provided</scope>
                </dependency>
                <dependency>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-classic</artifactId>
                    <scope>provided</scope>
                </dependency>
                </dependencies>
        </profile>
    </profiles>

</project>

4.0.0
org.springframework.boot
spring启动程序父级
2.2.2.1发布
UTF-8
UTF-8
1.8
/
2.0.11
3.99.14
gov.doe.ph
SpringBootDoeAPI
0.0.1-快照
SpringBootDoeAPI
用于springboot的Doe项目
战争
org.springframework.cloud
弹簧云弹簧服务连接器
1.2.3.1发布
org.springframework.cloud
SpringCloudFoundry连接器
1.2.3.1发布
org.springframework.boot
spring引导启动器数据jpa
org.springframework.boot
弹簧靴开发工具
真的
org.springframework.boot
SpringBootStarterWeb
回归经典
回写
org.springframework.boot
弹簧启动机tomcat
假如
org.springframework.boot
spring启动程序日志记录
假如
com.sap.cloud
neo java web sdk
${sap.cloud.sdk.version}
聚甲醛
假如
org.springframework.boot
弹簧起动试验
测试
org.junit.vintage
朱尼特老式发动机
org.apache.olingo
olingo-odata2-core
${olingo2.version}
javax.ws.rs
javax.ws.rs-api
org.apache.olingo
olingo-odata2-jpa-processor-core
${olingo2.version}
org.apache.olingo
olingo-odata2-jpa-processor-ref
${olingo2.version}
org.eclipse.persistence
日食
org.glassfish.jersey.core
泽西服务器
2.26
org.springframework.boot
春靴起跑服
org.springframework.boot
弹簧靴启动器jdbc
org.postgresql
postgresql
运行时
org.springframework.security
spring安全内核
5.2.1.1发布
org.springframework.boot
springbootmaven插件
查阅
假的
罐子
org.springframework.boot
弹簧启动机tomcat
假如
近地天体
假的
战争
org.slf4j
slf4j api
假如
回写
回归经典
假如
我试图一点一点地删除每个库,只要它仍然编译,但我仍然得到两个jar文件,所以现在我想知道如何检查每个库下载的jar文件

更新:spring boot starter数据jpa似乎是获得jakarta.persistence的数据,而olingo-odata2-jpa-processor-core、olingo-odata2-jpa-processor-ref和hibernate测试是使用javax.persistence的数据。
我只使用SpringBoot很短一段时间,所以这会导致问题吗?问题是,我并没有得到一致的错误。当我重新启动服务器时,有时会出现错误,有时则不会。我真的不知道是什么原因导致出现错误。

运行
mvn dependency:tree
,找出哪些依赖依赖于javax.persistence和jakarta.persistence

然后你必须做出决定。您想使用javax还是jakarta

如果您想使用javax,您需要降低依赖于持久性的库的版本,直到您从前面的命令中找到javax为止。如果你想使用雅加达,你需要增加这个版本

重要的是,所有依赖项都与javax或jakarta一致