2017-03-15 10 views
0

エラーが発生しました原因を解決する方法:java.lang.NoSuchMethodError:javax.persistence.Table.indexes()[Ljavax/persistence/Index; Spring起動時に問題が発生する

原因:java.lang.NoSuchMethodError:javax.persistence.Table.indexes()[Ljavax/persistence/Index;

プロジェクトがWebLogic 12CでデプロイされたプロジェクトがSpringブート、Maven Ad Eclipseで設定されている場合。ここで

が私のpom.xml形式で

<?xml version="1.0" encoding="UTF-8"?> 

http://maven.apache.org/xsd/maven-4.0.0.xsd "> 4.0.0

<groupId>com.project</groupId> 
<artifactId>project</artifactId> 
<version>0.1.0</version> 
<packaging>war</packaging> 



<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.1.RELEASE</version> 
</parent> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 

    <!-- JPA Data (We are going to use Repositories, Entities, Hibernate, etc...) --> 

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

    <!-- Use MySQL Connector-J --> 

    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.5</version> 
    </dependency> 

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

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>5.0.4.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>org.json</groupId> 
     <artifactId>json</artifactId> 
     <version>20080701</version> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>2.8.7</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-tomcat</artifactId> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>io.springfox</groupId> 
     <artifactId>springfox-swagger2</artifactId> 
     <version>2.6.1</version> 
     <scope>compile</scope> 
    </dependency> 

    <dependency> 
     <groupId>io.springfox</groupId> 
     <artifactId>springfox-swagger-ui</artifactId> 
     <version>2.6.1</version> 
     <scope>compile</scope> 
    </dependency> 

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

    <!-- <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.1-api</artifactId> 
     <version>1.0.0.Final</version> 
    </dependency> --> 

</dependencies> 

<properties> 
    <java.version>1.7</java.version> 
</properties> 

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

私はいずれかが解決策を知っている聞かせてください。

+0

スタックトレースを提供してください。この問題の原因として考えられるのは、JavaバージョンのWeblogicが実行されるのが古すぎることが考えられます。もう1つの理由は、クラスローダーがサードパーティーのソースからjavax.persistence.Tableをロードすることです。 – mm759

+0

あなたのWeblogicはまだJPAの古いバージョンを使用しています。索引はJPA 2.1(Java EE 7)で導入されました。 –

+0

アプリケーション(またはWebロジック)を設定して、サーバーからではなくアプリケーションからクラスを優先させます。 Weblogicには独自のJPA実装とAPIがあり、これはアプリケーションのクラスよりも優先されます。 –

答えて

1
  1. まず、Weblogicを使ったSpring Bootについて、私はここで2つのWebコンテナを混在させていると思います。

  2. JPAの例外に関しては、JPA 2.1とWLS 12.1.3がサポートされているが、デフォルトではサポートされていないためです。これを有効にする必要があります(クラスパスにはありません)。

http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/wls/12c/01-06-004-JavaEE7andWebLogicServer/javaee7.html

+0

WebLogic Serverバージョン12.1.3.0.0にアップグレードしましたが、問題は解決されません。 –

+0

jpa 2.1を有効にしましたか?それはデフォルトではありません。 – devwebcl

+0

jpa 2.1を有効にする方法は?上記のURLの –

関連する問題