1

Spring 3.2.3.RELEASE、Google Guice 3.0、guice-repository 2.1.0、guice-servlet 3.0、および Hibernate 3 を使用しています。

JpaRepository をサーブレット モジュール (web.xml) にインストールすると、ランタイム エラーが発生しました。

以下はソースコードです

public class JpaGuiceServletConfig extends GuiceServletContextListener {

    @Override
    protected Injector getInjector() {
        return Guice.createInjector(new ServletModule(){
            @Override
             protected void configureServlets() {
                this.install(new JpaRepositoryModule("ptol-persistence-unit") {
                    @Override
                    protected void bindRepositories(RepositoryBinder binder) {
                        binder.bind(CategoryRepository.class).to("ptol-persistence-unit");
                    }
                });
                //filter("/*").through(PersistFilter.class);
             }
        });
    }

}

web.xml 内

<!-- Listener Configuration -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <listener>
      <listener-class>phattuonline.common.base.JpaGuiceServletConfig</listener-class>
    </listener>

エラーが発生しました:

Jul 10, 2013 4:37:05 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class phattuonline.common.base.JpaGuiceServletConfig
java.lang.NoSuchMethodError: org.springframework.transaction.annotation.AnnotationTransactionAttributeSource.<init>(Lorg/springframework/transaction/annotation/TransactionAnnotationParser;)V
    at com.google.code.guice.repository.configuration.JpaRepositoryModule.createTransactionAttributeSource(JpaRepositoryModule.java:283)
    at com.google.code.guice.repository.configuration.JpaRepositoryModule.configure(JpaRepositoryModule.java:170)
    at com.google.inject.AbstractModule.configure(AbstractModule.java:59)
    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223)
    at com.google.inject.AbstractModule.install(AbstractModule.java:118)
    at phattuonline.common.base.JpaGuiceServletConfig$1.configureServlets(JpaGuiceServletConfig.java:19)
    at com.google.inject.servlet.ServletModule.configure(ServletModule.java:53)
    at com.google.inject.AbstractModule.configure(AbstractModule.java:59)
    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223)
    at com.google.inject.spi.Elements.getElements(Elements.java:101)
    at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:133)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:103)
    at com.google.inject.Guice.createInjector(Guice.java:95)
    at com.google.inject.Guice.createInjector(Guice.java:72)
    at com.google.inject.Guice.createInjector(Guice.java:62)
    at phattuonline.common.base.JpaGuiceServletConfig.getInjector(JpaGuiceServletConfig.java:16)
    at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:45)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4765)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5260)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1525)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1515)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

エラーが発生した理由を知っていますか?取引に問題はありませんか?

ありがとう

4

1 に答える 1

1

Guice リポジトリ モジュールには、Spring Data モジュールへのすべての依存関係が既に含まれています (DI フレームワークとして Guice のみを使用している場合は、POM で Spring を参照する必要はありません。おそらく、POM にはそれらの Spring モジュールの別のバージョンへの明示的な依存関係があるため、Guiceサポートされていないこの明示的なバージョンを読み取ろうとしています。

https://code.google.com/p/guice-repository/wiki/DevGuide?tm=6#Where_i_can_get_it ?を参照してください。

于 2014-09-04T21:01:13.120 に答える