2015-03-21 2 views
0

я получаю ошибку компиляции при попытке использовать JPA 2.1 и EclipseLink 2.6Странно JPA ошибка компиляции

em.getCriteriaBuilder() 

Java: не может найти символ символ: метод getCriteriaBuilder() местоположения: переменная эм типа javax.persistence.EntityManager

Expression<Boolean> 

Java: типа javax.persistence.criteria.Expression не принимает параметры

TypedQuery<Foo> query = em.createQuery(queryString, Foo.class); 

Java: метод CreateQuery в интерфейсе javax.persistence.EntityManager не может быть применен к данным видам; требуется: java.lang.String найдено: java.lang.String, java.lang.Class Причина: фактические и формальные списки аргументов различаются по длине

Мой pom.xml содержит следующие зависимости для JPA

<dependency> 
     <groupId>org.eclipse.persistence</groupId> 
     <artifactId>javax.persistence</artifactId> 
     <version>2.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.persistence</groupId> 
     <artifactId>eclipselink</artifactId> 
     <version>2.6.0</version> 
    </dependency> 

Я могу только думать, что компилятор использует другую версию JPA, где такие методы, которые я пытаюсь использовать выше, не существовали. Однако у pom явно есть реализация 2.1.

Эти ошибки компиляции происходят, когда я пытаюсь преобразовать проект non maven в проект Intellij IDEA maven (так что все работало до этого).

Полный pom.xml

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

<modelVersion>4.0.0</modelVersion> 
<packaging>war</packaging> 
<version>0.0.1-SNAPSHOT</version> 

<groupId>REDACTED</groupId> 
<artifactId>REDACTED</artifactId> 

<properties> 
    <appengine.app.version>1</appengine.app.version> 
    <appengine.target.version>1.7.5</appengine.target.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<dependencies> 
    <!-- Compile/runtime dependencies --> 
    <dependency> 
     <groupId>com.google.appengine</groupId> 
     <artifactId>appengine-api-1.0-sdk</artifactId> 
     <version>${appengine.target.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>jstl</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.persistence</groupId> 
     <artifactId>javax.persistence</artifactId> 
     <version>2.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.persistence</groupId> 
     <artifactId>eclipselink</artifactId> 
     <version>2.6.0</version> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.6</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.ws.rs</groupId> 
     <artifactId>javax.ws.rs-api</artifactId> 
     <version>2.0.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <!-- if your container implements Servlet API older than 3.0, use "jersey-container-servlet-core" --> 
     <artifactId>jersey-container-servlet</artifactId> 
     <version>2.17</version> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.jersey.ext</groupId> 
     <artifactId>jersey-mvc</artifactId> 
     <version>2.17</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>2.5.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.5.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
     <version>2.5.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>3.2.6.RELEASE</version> 
    </dependency> 

    <!-- Test Dependencies --> 
    <dependency> 
     <groupId>com.google.appengine</groupId> 
     <artifactId>appengine-testing</artifactId> 
     <version>${appengine.target.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.google.appengine</groupId> 
     <artifactId>appengine-api-stubs</artifactId> 
     <version>${appengine.target.version}</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <version>2.5.1</version> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.3</version> 
      <configuration> 
       <archiveClasses>true</archiveClasses> 
       <webResources> 
        <!-- in order to interpolate version from pom into appengine-web.xml --> 
        <resource> 
         <directory>${basedir}/src/main/webapp/WEB-INF</directory> 
         <filtering>true</filtering> 
         <targetPath>WEB-INF</targetPath> 
        </resource> 
       </webResources> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>com.google.appengine</groupId> 
      <artifactId>appengine-maven-plugin</artifactId> 
      <version>${appengine.target.version}</version> 
     </plugin> 
    </plugins> 
</build> 

Edit: результат работы МВН зависимость: дерево

[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ REDACTED --- 
[INFO] REDACTED:war:0.0.1-SNAPSHOT 
[INFO] +- com.google.appengine:appengine-api-1.0-sdk:jar:1.7.5:compile 
[INFO] +- javax.servlet:servlet-api:jar:2.5:provided (scope not updated to 
compile) 
[INFO] +- jstl:jstl:jar:1.2:compile 
[INFO] +- org.eclipse.persistence:javax.persistence:jar:2.1.0:compile 
[INFO] +- org.eclipse.persistence:eclipselink:jar:2.6.0:compile 
[INFO] | +- org.eclipse.persistence:commonj.sdo:jar:2.1.1:compile 
[INFO] | +- javax.validation:validation-api:jar:1.1.0.Final:compile 
[INFO] | \- org.glassfish:javax.json:jar:1.0.4:compile 
[INFO] +- mysql:mysql-connector-java:jar:5.1.6:compile 
[INFO] +- javax.ws.rs:javax.ws.rs-api:jar:2.0.1:provided (scope not updated to compile) 
[INFO] +- org.glassfish.jersey.containers:jersey-container-servlet:jar:2.17:compile 
[INFO] | +- org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.17:compile 
[INFO] | | \- org.glassfish.hk2.external:javax.inject:jar:2.4.0-b10:compile 
[INFO] | +- org.glassfish.jersey.core:jersey-common:jar:2.17:compile 
[INFO] | | +- javax.annotation:javax.annotation-api:jar:1.2:compile 
[INFO] | | +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.17:compile 
[INFO] | | +- org.glassfish.hk2:hk2-api:jar:2.4.0-b10:compile 
[INFO] | | | +- org.glassfish.hk2:hk2-utils:jar:2.4.0-b10:compile 
[INFO] | | | \- org.glassfish.hk2.external:aopalliance-repackaged:jar:2.4.0-b10:compile 
[INFO] | | +- org.glassfish.hk2:hk2-locator:jar:2.4.0-b10:compile 
[INFO] | | | \- org.javassist:javassist:jar:3.18.1-GA:compile 
[INFO] | | \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile 
[INFO] | \- org.glassfish.jersey.core:jersey-server:jar:2.17:compile 
[INFO] |  +- org.glassfish.jersey.core:jersey-client:jar:2.17:compile 
[INFO] |  \- org.glassfish.jersey.media:jersey-media-jaxb:jar:2.17:compile 
[INFO] +- org.glassfish.jersey.ext:jersey-mvc:jar:2.17:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.5.1:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.5.1:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.5.1:compile 
[INFO] +- org.springframework.security:spring-security-web:jar:3.2.6.RELEASE:compile 
[INFO] | +- aopalliance:aopalliance:jar:1.0:compile 
[INFO] | +- org.springframework.security:spring-security-core:jar:3.2.6.RELEASE:compile 
[INFO] | | \- org.springframework:spring-aop:jar:3.2.8.RELEASE:compile 
[INFO] | +- org.springframework:spring-beans:jar:3.2.8.RELEASE:compile 
[INFO] | +- org.springframework:spring-context:jar:3.2.8.RELEASE:compile 
[INFO] | +- org.springframework:spring-core:jar:3.2.8.RELEASE:compile 
[INFO] | +- org.springframework:spring-expression:jar:3.2.8.RELEASE:compile 
[INFO] | \- org.springframework:spring-web:jar:3.2.8.RELEASE:compile 
[INFO] +- com.google.appengine:appengine-testing:jar:1.7.5:test 
[INFO] \- com.google.appengine:appengine-api-stubs:jar:1.7.5:test 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
+0

Вы можете запустить 'mvn dependency: tree', который должен сказать вам, если неправильные зависимости попадают в – Raghuram

+0

@Raghuram Я выполнил команду и опубликовал результаты. Ничто не кажется противоречивым. – javajaba

+1

Я только что проверил ваш 'pom.xml' (в Eclipse), и все работает отлично. Вы пробовали обновить проект Maven от IntelliJ IDEA? – Tunaki

ответ

0

Я считаю, что Google App Engine и Maven Грани IntelliJ IDEA несовместимы. Я решил создать проект из скелета-архетипа com.google.appengine.archetypes и проигнорировал интеграционную функцию GAE IDE. Это разрешило ошибки сложения.

Смежные вопросы