2016-06-15 5 views
1

Я вытаскиваю то, что у меня осталось из головы, пытаясь решить эту проблему. У меня есть два проекта, один из которых зависит от другого.java.lang.NoSuchMethodError: org.jboss.logging.Logger.debug Весна 4.3, Hibernate 5.1

Проект A pom.xml

<properties> 
    <jersey.version>2.23.1</jersey.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<build> 
    <finalName>ws2</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.5.1</version> 
      <inherited>true</inherited> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.glassfish.jersey</groupId> 
      <artifactId>jersey-bom</artifactId> 
      <version>${jersey.version}</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

<dependencies> 
    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-servlet-core</artifactId> 
     <!-- use the following artifactId if you don't need servlet 2.x 
      compatibility --> 
     <!-- artifactId>jersey-container-servlet</artifactId --> 
    </dependency> 

    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>6.0.2</version> 
    </dependency> 

    <dependency> 
     <groupId>waterwingsdao</groupId> 
     <artifactId>waterwingsdao</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </dependency> 

    <dependency> 
     <groupId>com.google.code.gson</groupId> 
     <artifactId>gson</artifactId> 
     <version>2.6.2</version> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.jersey.ext</groupId> 
     <artifactId>jersey-spring3</artifactId> 
     <version>2.23</version> 
    </dependency> 

    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.2</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>4.3.0.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>4.3.0.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>4.3.0.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>5.1.0.Final</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>jboss-logging</artifactId> 
       <groupId>org.jboss.logging</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
</dependencies> 

Проект A applicationContext.xml

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="wwDbConfig" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
      <prop key="hibernate.current_session_context_class">thread</prop> 
      <prop key="hibernate.show_sql">true</prop> 
     </props> 
    </property> 
</bean> 

<!-- JNDI config --> 
<bean id="wwDbConfig" class="org.springframework.jndi.JndiObjectFactoryBean" 
    scope="singleton"> 
    <property name="jndiName" value="java:comp/env/jdbc/blahblah" /> 
    <property name="resourceRef" value="true" /> 
</bean> 

Проект B (A зависит от B) pom.xml

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 
     <scope>test</scope> 
    </dependency> 
    <!-- <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> 
     <version>3.6.3.Final</version> </dependency> --> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-c3p0</artifactId> 
     <version>5.1.0.Final</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>jboss-logging</artifactId> 
       <groupId>org.jboss.logging</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.2.0.Final</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>jboss-logging</artifactId> 
       <groupId>org.jboss.logging</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 


    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>6.0.2</version> 
    </dependency> 

    <dependency> 
     <groupId>org.javassist</groupId> 
     <artifactId>javassist</artifactId> 
     <version>3.20.0-GA</version> 
    </dependency> 

    <dependency> 
     <groupId>com.mchange</groupId> 
     <artifactId>c3p0</artifactId> 
     <version>0.9.5.2</version> 
    </dependency> 

    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.7.21</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>4.3.0.RELEASE</version> 
    </dependency> 


</dependencies> 

Вот стек след:

org.springframework.beans.factory.BeanCreationException: Ошибка создания компонента с именем sessionFactory, определенным в ресурсе пути к ключу [applicationContext.xml]: вызов метода init не удался; Вложенное исключение - java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf (Ljava/lang/String; I) V at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1578) на org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:545) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:482) в org.springframework. beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:306) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support .Abstra ctBeanFactory.doGetBean (AbstractBeanFactory.java:302) на org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:197) в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory. Java: 756) на org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:861) на org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:541) на org.springframework. web.context.ContextLoader.configureAndRefreshWebApplicationContext (ContextLoader.java:389) at org.springframework.web.context.ContextLoader.initWebApplicationContext (ContextLoader.java:294) at org.springframew ork.web.context.ContextLoaderListener.contextInitialized (ContextLoaderListener.java:112) на org.apache.catalina.core.StandardContext.listenerStart (StandardContext.java:4813) на org.apache.catalina.core.StandardContext.startInternal (StandardContext.java:5272) at org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:147) at org.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1407) at org.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1397) на java.util.concurrent.FutureTask.run (FutureTask.java:266) на 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) Вызвано: java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf (Ljava/lang/String; I) V at org.hibernate .cfg.Settings. (Settings.java:81) at org.hibernate.cfg.Settings. (Settings.java:50) at org.hibernate.internal.SessionFactoryImpl. (SessionFactoryImpl.java: 200) на org.hibernate.boot.internal.SessionFactoryBuilderImpl.build (SessionFactoryBuilderImpl.java:476) на org.hibernate.cfg.Configuration.buildSessionFactory (Configuration.java:707) на org.hibernate.cfg. Configuration.buildSessionFactory (Configuration.java:723) на org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory (LocalSessionFactoryBean.java:504) в org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet (LocalSessionFactoryBean.java:488) на org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1637) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFacto ry.java:1574)

Мое намерение состоит в том, чтобы построить службу Jax-RS, используя спящий режим поверх MySQL, и все это загружено Spring.

Любая помощь была бы принята с благодарностью.

+0

Почему вы исключаете jboss-logging в своих POM? –

+0

Это было основано на предположении от другого поста. Изменения курса не повлияли. – supertorqued

ответ

0

Похоже, вы пытаетесь использовать Commons Logging и исключать регистратор jboss. Но один из классов использует журналирование jboss. Из трассировки стека узнайте класс, который вызывает класс журнала jboss. Поскольку во время выполнения класс журнала не доступен, приложение бросает NoSuchMethodError.

2

Я нашел ответ, Hibernate 5.1.0 Final зависит от ведения журнала JBoss. Я добавил

<dependency> 
    <groupId>org.jboss.logging</groupId> 
    <artifactId>jboss-logging</artifactId> 
    <version>3.3.0.Final</version> 
</dependency> 

Я все еще нужны следующие исключения:

<dependency> 
    <groupId>org.glassfish.jersey.ext</groupId> 
    <artifactId>jersey-spring3</artifactId> 
    <version>2.23</version> 
    <exclusions> 
     <exclusion> 
      <groupId>org.glassfish.hk2.external</groupId> 
      <artifactId>bean-validator</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context</artifactId> 
    <version>4.3.0.RELEASE</version> 
    <exclusions> 
     <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-c3p0</artifactId> 
    <version>5.1.0.Final</version> 
    <exclusions> 
     <exclusion> 
      <artifactId>jboss-logging</artifactId> 
      <groupId>org.jboss.logging</groupId> 
     </exclusion> 
    </exclusions> 
</dependency> 

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>5.2.0.Final</version> 
    <exclusions> 
     <exclusion> 
      <artifactId>jboss-logging</artifactId> 
      <groupId>org.jboss.logging</groupId> 
     </exclusion> 
    </exclusions> 
</dependency> 

Спасибо за вашу помощь, иногда вам просто нужен другой набор глаз или толчок в правильном направлении.

Смежные вопросы