2010-11-19 4 views
2

ハドソン統合サーバでSpring Rooプロジェクト(= Spring MVC + aspectj + hibernate)のビルドを実行しようとしています。java-6-openjdkのjavax.persistence

プロジェクトはTUは私の地元のmavenでビルドが正常に動作しますが、サーバー上の環境がこれらのエラーにつながるjavax.persistenceの他のいくつかのバージョンを注入するようだ

<dependency> 
<groupId>javax.persistence</groupId> 
<artifactId>com.springsource.javax.persistence</artifactId> 
<version>1.0.0</version> 
</dependency> 

を使用するように構成されています

[ERROR] The method createQuery(String) in the type EntityManager is not applicable for the arguments (String, Class<Long>) 
[ERROR] The method createQuery(String) in the type EntityManager is not applicable for the arguments (String, Class<Folder>) 

ビルドはMavenので走っていると、それは設定があります:

Apache Maven 2.2.1 (rdebian-4) 
Java version: 1.6.0_18 
Java home: /usr/lib/jvm/java-6-openjdk/jre 
Default locale: en_US, platform encoding: ANSI_X3.4-1968 
OS name: "linux" version: "2.6.32-5-amd64" arch: "amd64" Family: "unix" 

編集:私はローカルとサーバー上で同じバージョンのrooを使用していませんでした:)

答えて

3

プロジェクトでJPA2を使用していますか?

JPA2は、Java EE 6の一部であり、私が見たものから、あなたはthisメソッドを使用している:

<T> TypedQuery<T> createQuery(java.lang.String qlString, java.lang.Class<T> resultClass) 

あなたが見ることができるように、この方法は、JPA1(のJava EE 5)には存在しません。 EntityManagerを調べることによってのみ

Query createQuery(String qlString) 

が存在します。

これは、HudsonがJPA1にjavax.persistenceを使用していることを示しています。私はHudsonを使用していないので、JPA2にjavax.persistenceを使用できるかどうかを調べる必要があります。

+0

良好な分析(+1)。しかし、私は問題がハドソンにあるとは思わない。私は依存関係が間違っていると思います –

+1

私の問題が見つかりました! Rooは実際にコードを生成します。私のローカルマシンでは、Roo 1.0.1を使用してJPA1コードを生成し、永続性v1の依存関係を追加しました。 しかし、私はJPA2コードを生成したroo 1.1をインストールし、コミットされたpom.xmlに基づいてコンパイルしようとしました。 – Nicolas

0

ローカルで動作するのは奇妙です。

あなたはJPA 1に依存していますが、JPA 2(createQuery(query, class))の方法を使用しています。

ローカルクラスパスを確認してください。

関連する問題