1

spring-data-rest で休憩サービスを書いています。そして、修正方法がわからないという例外に直面しています。

次のアプリケーション構成があります

@Configuration
@ComponentScan(basePackageClasses = Application.class)
@EnableJpaRepositories
@EnableTransactionManagement
public class Application {

    @Bean
    public DataSource dataSource() {
        return new EmbeddedDatabaseBuilder().setType(H2).build();
    }

    @Bean
    public CustomerLoader loadCustomers() { 
        return new CustomerLoader();
    }

    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource, JpaVendorAdapter jpaVendorAdapter) {
        LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean();
        lef.setDataSource(dataSource);
        lef.setJpaVendorAdapter(jpaVendorAdapter);
        lef.setPackagesToScan("hello");
        return lef;
    }

    @Bean
    public JpaVendorAdapter jpaVendorAdapter() {
        HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();
        hibernateJpaVendorAdapter.setShowSql(false);
        hibernateJpaVendorAdapter.setGenerateDdl(true);
        hibernateJpaVendorAdapter.setDatabase(Database.H2);
        return hibernateJpaVendorAdapter;
    }

    @Bean
    public PlatformTransactionManager transactionManager() {
        return new JpaTransactionManager();
    }

そして、これは私の WebApplication 初期化子です

@Override
    public void onStartup(ServletContext ctx)
            throws ServletException {

        AnnotationConfigWebApplicationContext rootCtx = new AnnotationConfigWebApplicationContext();
        rootCtx.register(Application.class);

        ctx.addListener(new ContextLoaderListener(rootCtx));

        RepositoryRestExporterServlet exporter = new RepositoryRestExporterServlet();

        ServletRegistration.Dynamic reg = ctx.addServlet("exporter", exporter);
        reg.setLoadOnStartup(1);
        reg.addMapping("/*");
    }

サーバーでアプリケーションを実行すると、Servlet.init() で次の例外が発生します。

SEVERE: Servlet /spring-data-rest threw load() exception java.lang.NoSuchMethodError: org.springframework.data.rest.webmvc.ResourceProcessorInvokingHandlerAdapter.getReturnValueHandlers()Lorg/springframework/web/method/support/HandlerMethodReturnValueHandlerComposite;(完全なスタックトレースが必要な場合は教えてください)

jar の重複によるクラスの読み込みの問題だと思いました。しかし、私はmavenでプロジェクトを構築しており、親pom spring-boot-starter-parentバージョン0.5.0.M5で1つのリポジトリ( http://repo.spring.io/libs-milestone )のみを使用しています

4

3 に答える 3

0

エンティティのパッケージに使用する名前に注目してください。メソッド「lef.setPackagesToScan」が受け取っている文字列「Hello」について話しています。これは、エンティティが存在する実際のパッケージですか? そうでない場合は、それが間違いの原因である可能性があります。

于 2013-10-28T07:36:53.213 に答える
0

私にとっては、最新のスナップショット バージョンに更新することで問題が解決しました。

<dependencies>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-rest-webmvc</artifactId>
        <version>2.0.0.BUILD-SNAPSHOT</version>
    </dependency>
</dependencies>
<repositories>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>http://repo.spring.io/snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
于 2013-11-02T22:54:14.013 に答える