2016-06-13 17 views
-1

Java 7で最新の安定版Dropwizardフレームワークを使用しています。私はリソースクラスを使用しようとしています。私が試したことは何ですか?次のスタックトレースを取得しています。登録済みリソースのDropwizard java.lang.NoSuchMethodException

WARN [2016-06-13 14:51:26,664] org.eclipse.jetty.server.HttpChannel: /users/list 
! java.lang.NoSuchMethodException: Could not find a suitable constructor in my.test.package.endpoint.TestResource class. 
! at org.glassfish.jersey.internal.inject.JerseyClassAnalyzer.getConstructor(JerseyClassAnalyzer.java:192) ~[jersey-common-2.21.jar:na] 
! at org.jvnet.hk2.internal.Utilities.getConstructor(Utilities.java:179) ~[hk2-locator-2.4.0-b31.jar:na] 
! at org.jvnet.hk2.internal.Utilities.justCreate(Utilities.java:993) ~[hk2-locator-2.4.0-b31.jar:na] 
! ... 65 common frames omitted 
! Causing: org.glassfish.hk2.api.MultiException: A MultiException has 1 exceptions. They are: 
! 1. java.lang.NoSuchMethodException: Could not find a suitable constructor in my.test.package.endpoint.TestResource class. 
! 
! at org.jvnet.hk2.internal.Collector.throwIfErrors(Collector.java:89) ~[hk2-locator-2.4.0-b31.jar:na] 
! at org.jvnet.hk2.internal.Utilities.justCreate(Utilities.java:995) ~[hk2-locator-2.4.0-b31.jar:na] 
! at org.jvnet.hk2.internal.ServiceLocatorImpl.create(ServiceLocatorImpl.java:963) ~[hk2-locator-2.4.0-b31.jar:na] 
! at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1055) ~[hk2-locator-2.4.0-b31.jar:na] 
! at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:1047) ~[hk2-locator-2.4.0-b31.jar:na] 
! at org.glassfish.jersey.internal.inject.Injections.getOrCreate(Injections.java:170) ~[jersey-common-2.21.jar:na] 
! at org.glassfish.jersey.server.model.MethodHandler$ClassBasedMethodHandler.getInstance(MethodHandler.java:284) ~[jersey-server-2.21.jar:na] 
! at org.glassfish.jersey.server.internal.routing.PushMethodHandlerRouter.apply(PushMethodHandlerRouter.java:74) ~[jersey-server-2.21.jar:na] 
! at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:109) ~[jersey-server-2.21.jar:na] 
! at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:112) ~[jersey-server-2.21.jar:na] 
! at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:112) ~[jersey-server-2.21.jar:na] 
! at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:112) ~[jersey-server-2.21.jar:na] 
! at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:112) ~[jersey-server-2.21.jar:na] 
! at org.glassfish.jersey.server.internal.routing.RoutingStage.apply(RoutingStage.java:92) ~[jersey-server-2.21.jar:na] 
! at org.glassfish.jersey.server.internal.routing.RoutingStage.apply(RoutingStage.java:61) ~[jersey-server-2.21.jar:na] 
! at org.glassfish.jersey.process.internal.Stages.process(Stages.java:197) ~[jersey-common-2.21.jar:na] 
! at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:301) ~[jersey-server-2.21.jar:na] 
! at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) ~[jersey-common-2.21.jar:na] 
! at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) ~[jersey-common-2.21.jar:na] 
! at org.glassfish.jersey.internal.Errors.process(Errors.java:315) ~[jersey-common-2.21.jar:na] 
! at org.glassfish.jersey.internal.Errors.process(Errors.java:297) ~[jersey-common-2.21.jar:na] 
! at org.glassfish.jersey.internal.Errors.process(Errors.java:267) ~[jersey-common-2.21.jar:na] 
! at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) ~[jersey-common-2.21.jar:na] 
! at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:292) ~[jersey-server-2.21.jar:na] 
! at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1139) ~[jersey-server-2.21.jar:na] 
! at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:471) ~[jersey-container-servlet-core-2.22.1.jar:na] 
! ... 41 common frames omitted 
! Causing: javax.servlet.ServletException: A MultiException has 1 exceptions. They are: 
! 1. java.lang.NoSuchMethodException: Could not find a suitable constructor in my.test.package.endpoint.TestResource class. 
! 
! at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:487) ~[jersey-container-servlet-core-2.22.1.jar:na] 
! at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:425) ~[jersey-container-servlet-core-2.22.1.jar:na] 
! at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:383) ~[jersey-container-servlet-core-2.22.1.jar:na] 
! at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:336) ~[jersey-container-servlet-core-2.22.1.jar:na] 
! at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:223) ~[jersey-container-servlet-core-2.22.1.jar:na] 
! at io.dropwizard.jetty.NonblockingServletHolder.handle(NonblockingServletHolder.java:49) ~[dropwizard-jetty-0.9.2.jar:0.9.2] 
! at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) ~[jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:83) ~[jetty-servlets-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:364) ~[jetty-servlets-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at io.dropwizard.jetty.BiDiGzipFilter.doFilter(BiDiGzipFilter.java:132) ~[dropwizard-jetty-0.9.2.jar:0.9.2] 
! at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) ~[jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at io.dropwizard.servlets.ThreadNameFilter.doFilter(ThreadNameFilter.java:29) ~[dropwizard-servlets-0.9.2.jar:0.9.2] 
! at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) ~[jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at io.dropwizard.jersey.filter.AllowedMethodsFilter.handle(AllowedMethodsFilter.java:43) ~[dropwizard-jersey-0.9.2.jar:0.9.2] 
! at io.dropwizard.jersey.filter.AllowedMethodsFilter.doFilter(AllowedMethodsFilter.java:38) ~[dropwizard-jersey-0.9.2.jar:0.9.2] 
! at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) ~[jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:119) ~[guice-servlet-4.0.jar:na] 
! at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:133) ~[guice-servlet-4.0.jar:na] 
! at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:130) ~[guice-servlet-4.0.jar:na] 
! at com.google.inject.servlet.GuiceFilter$Context.call(GuiceFilter.java:203) ~[guice-servlet-4.0.jar:na] 
! at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:130) ~[guice-servlet-4.0.jar:na] 
! at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) ~[jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) ~[jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) ~[jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at com.codahale.metrics.jetty9.InstrumentedHandler.handle(InstrumentedHandler.java:240) ~[metrics-jetty9-3.1.2.jar:3.1.2] 
! at io.dropwizard.jetty.RoutingHandler.handle(RoutingHandler.java:51) ~[dropwizard-jetty-0.9.2.jar:0.9.2] 
! at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:95) ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:159) ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.server.Server.handle(Server.java:499) ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) ~[jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) [jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) [jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [jetty-util-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [jetty-util-9.2.13.v20150730.jar:9.2.13.v20150730] 
! at java.lang.Thread.run(Unknown Source) [na:1.7.0_80] 
WARN [2016-06-13 14:51:26,665] org.eclipse.jetty.server.HttpChannel: Could not send response error 500: javax.servlet.ServletException: A MultiException has 1 exceptions. They are: 
1. java.lang.NoSuchMethodException: Could not find a suitable constructor in my.test.package.endpoint.TestResource class. 

私は多くの同様の問題を読んでいますが、すべての可能な解決方法を試しましたが、問題は依然として存在します。

インサイドApplicationクラス:

@Override 
     public void run(ServiceConfiguration configuration, Environment environment) 
       throws Exception { 
      final DBIFactory factory = new DBIFactory(); 
      final DBI jdbi = factory 
      .build(environment, configuration.getDataSourceFactory(),"as400"); 
      final TestDAOdao = jdbi.onDemand(TestDAO.class); 

      environment.jersey().register(new TestResource(dao)); 
    } 

TestResource.class

@Path("/test") 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 
public class TestResource { 

    private final TestDAO testDAO; 

    public TestResource (TestDAO testDAO) { 
     this.testDAO= testDAO; 
    } 



    @Path("/list") 
    @GET 
    public List<TestDto> list() { 
     ...... 


    } 
} 

マイTestDao.class

public interface TestDao{ 

    @Mapper(TestMapper.class) 
    @SqlQuery (".... ") 
    List<Test> list(); 
} 
+1

問題はあなたの質問にあなたが投稿できる 'gr.generali.mygen.api.rs.v1.endpoint.UserRs'宣言にありますか? –

+0

申し訳ありませんが、私は気づいていませんでした。私はあなたの名前をより明確にするために名前を変更しました。 UserRsは私のTestResourceクラスです。 – eleniVl

+0

Guiceを注射していますか?もしそうなら、あなたのGuice設定はどこにありますか?私の推測ではGuiceもクラスを作成しようとしています。多分あなたはパッケージのスキャンを設定するでしょうか? –

答えて

1

が解決しよう!!

ありがとうございました。
guiceの初期化で問題が発生しました。 私のコードはでした:私はこの行をコメントアウトするとき

@Override 
    public void initialize(Bootstrap<ServiceConfiguration> bootstrap) { 
     super.initialize(bootstrap); 
     guiceBundle = GuiceBundle.<ServiceConfiguration>newBuilder() 
        .addModule(new MyBinder()) 
        .enableAutoConfig(getClass().getPackage().getName()) 
        .setConfigClass(ServiceConfiguration.class) 
        .build(); 
     bootstrap.addBundle(guiceBundle); 
     bootstrap.addBundle(new AssetsBundle("/dist", "/dist", "index.html")); 

    } 

.enableAutoConfig(getClass().getPackage().getName()) 

それがうまく働きました。最初からサンプルプロジェクトを作成するまで、これが悪の原因になるとは想像もできないので、最初に投稿しませんでした。

関連する問題