powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / RESTEasy + Guice Could not find constructor for class
3 сообщений из 3, страница 1 из 1
RESTEasy + Guice Could not find constructor for class
    #39075807
alleo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Пытаюсь запустить Jboss RESTEassy на сервере. Получаю такую ошибку:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
15:20:39,664 WARN  [org.hibernate.jpa.internal.EntityManagerFactoryRegistry] (default task-9) HHH000436: Entity manager factory name (shashki64PU) is already registered.  If entity manager will be clustered or passivated, specify a unique value for property 'hibernate.ejb.entitymanager_factory_name'
15:20:39,724 ERROR [io.undertow.request] (default task-9) UT005023: Exception handling request to /rus/rest/games: java.lang.RuntimeException: Could not find constructor for class: online.shashki.rus.server.rest.PlayersResourceImpl
	at org.jboss.resteasy.spi.metadata.ResourceBuilder.constructor(ResourceBuilder.java:683)
	at org.jboss.resteasy.plugins.server.resourcefactory.POJOResourceFactory.registered(POJOResourceFactory.java:41)
	at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:207)
	at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:193)
	at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:179)
	at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:156)
	at org.jboss.resteasy.core.ResourceMethodRegistry.addPerRequestResource(ResourceMethodRegistry.java:75)
	at org.jboss.resteasy.spi.ResteasyDeployment.registration(ResteasyDeployment.java:400)
	at org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.java:241)
	at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatcher.java:112)
	at org.jboss.resteasy.plugins.server.servlet.FilterDispatcher.init(FilterDispatcher.java:42)
	at com.arcbees.guicyresteasy.GuiceRestEasyFilterDispatcher.init(GuiceRestEasyFilterDispatcher.java:28)
	at com.google.inject.servlet.FilterDefinition.init(FilterDefinition.java:112)
	at com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:99)
	at com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:220)
	at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111)
	at org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:84)
	at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:97)
	at io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:79)
	at io.undertow.servlet.core.ManagedFilter.getFilter(ManagedFilter.java:65)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
	at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85)
	at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
	at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
	at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
	at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
	at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
	at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
	at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)
	at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
	at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282)
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261)
	at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80)
	at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172)
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)



web.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">

    <listener>
        <listener-class>online.shashki.rus.server.guice.GuiceServletConfig</listener-class>
    </listener>

    <filter>
        <filter-name>guiceFilter</filter-name>
        <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>guiceFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--<context-param>-->
        <!--<param-name>resteasy.guice.modules</param-name>-->
        <!--<param-value>online.shashki.rus.server.rest.RestModule</param-value>-->
    <!--</context-param>-->

    <!--<context-param>-->
        <!--<param-name>resteasy.guice.stage</param-name>-->
        <!--<param-value>PRODUCTION</param-value>-->
    <!--</context-param>-->

    <context-param>
        <param-name>resteasy.scan</param-name>
        <param-value>false</param-value>
    </context-param>

    <!-- this should be the same URL pattern as the servlet-mapping property -->
    <context-param>
        <param-name>resteasy.servlet.mapping.prefix</param-name>
        <param-value>/rest</param-value>
    </context-param>

    <!--<servlet>-->
        <!--<servlet-name>Resteasy</servlet-name>-->
        <!--<servlet-class>-->
            <!--org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher-->
        <!--</servlet-class>-->
    <!--</servlet>-->

    <!--<servlet-mapping>-->
        <!--<servlet-name>Resteasy</servlet-name>-->
        <!--<url-pattern>/rest/*</url-pattern>-->
    <!--</servlet-mapping>-->

    <error-page>
        <error-code>500</error-code>
        <location>/500.html</location>
    </error-page>

    <error-page>
        <error-code>404</error-code>
        <location>/404.html</location>
    </error-page>

    <session-config>
        <session-timeout>-1</session-timeout>
    </session-config>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>



PlayersResourceImpl.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;

@Singleton
public class PlayersResourceImpl implements PlayersResource {
  private final Provider<PlayerDao> playerDaoProvider;
  private final Provider<HttpServletRequest> requestProvider;

  @Inject
  PlayersResourceImpl(
      Provider<PlayerDao> playerDaoProvider
      /*HttpServletRequest requestProvider*/) {
    this.playerDaoProvider = playerDaoProvider;
    this.requestProvider = null;
  }
}



RestModule.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class RestModule extends AbstractModule {
  @Override
  protected void configure() {
    bind(JacksonProvider.class).in(Singleton.class);

    bind(GamesResource.class).to(GamesResourceImpl.class);
    bind(PlayersResource.class).to(PlayersResourceImpl.class);

    install(new FactoryModuleBuilder()
        .implement(GameResource.class, GameResourceImpl.class)
        .build(ResourcesFactory.class));
  }
}



Как я понял проблема в том, что RESTEasy ожидает конструктор без параметров, либо аннотированные параметры, но Inject не делает. Я пробовал отключать и включать аттрибут автоскана, но безрезультатно. Так же прописывал RestModule.java последовательно в web.xml и в Guice.
Кто-нибудь сталкивался с такой ошибкой?
...
Рейтинг: 0 / 0
RESTEasy + Guice Could not find constructor for class
    #39075835
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте просто добавить конструктор без аргументов. Возможно, он нужен для сериализации или еще чего.
http://stackoverflow.com/a/21470977
...
Рейтинг: 0 / 0
RESTEasy + Guice Could not find constructor for class
    #39075876
alleo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Спасибо, вопрос решён.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / RESTEasy + Guice Could not find constructor for class
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]