2013-01-30 4 views
1

Когда я пытаюсь открыть гибернации перспективы в Eclipse, я получаю вышеуказанную ошибку, со следующим StackTrace:затмение, JUnit, Hibernate внутренней ошибки во время: «кокетливых детей базов данных»

java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V 
at org.apache.commons.logging.impl.SLF4JLocationAwareLog.debug(SLF4JLocationAwareLog.java:133) 
at org.hibernate.cfg.reveng.dialect.JDBCMetaDataDialect.getTables(JDBCMetaDataDialect.java:26) 
at org.hibernate.cfg.reveng.JDBCReader.processTables(JDBCReader.java:476) 
at org.hibernate.cfg.reveng.JDBCReader.readDatabaseSchema(JDBCReader.java:74) 
at org.hibernate.eclipse.console.workbench.LazyDatabaseSchemaWorkbenchAdapter$2.execute(LazyDatabaseSchemaWorkbenchAdapter.java:126) 
at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:63) 
at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:107) 
at org.hibernate.eclipse.console.workbench.LazyDatabaseSchemaWorkbenchAdapter.readDatabaseSchema(LazyDatabaseSchemaWorkbenchAdapter.java:115) 
at org.hibernate.eclipse.console.workbench.LazyDatabaseSchemaWorkbenchAdapter.getChildren(LazyDatabaseSchemaWorkbenchAdapter.java:65) 
at org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.fetchDeferredChildren(BasicWorkbenchAdapter.java:106) 
at org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:235) 
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) 

Это мой pom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<project 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 

    <repositories> 
     <repository> 
      <id>caf</id> 
      <name>caf-repo</name> 
      <url>http://artifactory.fao.org/artifactory/caf-release-local</url> 
     </repository> 
    </repositories> 
    <groupId>org.fao.fipdt</groupId> 
    <artifactId>fip-dt</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <name>FIP-Dt Tool</name> 
    <properties> 
     <org.springframework.version>3.2.0.RELEASE</org.springframework.version> 
     <javax.servlet.jstl.version>1.2</javax.servlet.jstl.version> 
    </properties> 

    <profiles> 
     <profile> 
      <id>development</id> 
      <activation> 
       <activeByDefault>true</activeByDefault> 
      </activation> 
      <properties> 
       ... 
      </properties> 
     </profile> 
    </profiles> 

    <dependencies> 

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

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

     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-jpa</artifactId> 
      <version>1.0.1.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>3.2.0.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>3.2.0.RELEASE</version> 
     </dependency> 

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


     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>3.2.0.RELEASE</version> 
     </dependency> 

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

     <dependency> 
      <groupId>org.fao.caf</groupId> 
      <artifactId>caf-client</artifactId> 
      <version>3.3.3</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
     </dependency> 


     <dependency> 
      <groupId>commons-dbcp</groupId> 
      <artifactId>commons-dbcp</artifactId> 
      <version>1.4</version> 
     </dependency> 


     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>${javax.servlet.jstl.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.16</version> 
     </dependency> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.8.1</version> 
      <scope>test</scope> 
     </dependency> 

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

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

     <dependency> 
      <groupId>commons-collections</groupId> 
      <artifactId>commons-collections</artifactId> 
      <version>20040616</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>4.1.9.Final</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>4.1.9.Final</version> 
     </dependency> 


    </dependencies> 

    <build> 

     <finalName>fip-dt</finalName> 

     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
        <encoding>UTF8</encoding> 
       </configuration> 
       <inherited>true</inherited> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-eclipse-plugin</artifactId> 
       <version>2.9</version> 
      </plugin> 
     </plugins> 

     <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <filtering>true</filtering> 
       <includes> 
        <include>**/*.xml</include> 
       </includes> 
      </resource> 
     </resources> 
     <testResources> 
      <testResource> 
       <directory>src/test/resources</directory> 
       <filtering>true</filtering> 
       <includes> 
        <include>**/*.xml</include> 
       </includes> 
      </testResource> 
      <testResource> 
       <directory>src/main/resources</directory> 
       <filtering>true</filtering> 
       <includes> 
        <include>**/*.xml</include> 
       </includes> 
      </testResource> 
     </testResources> 
    </build> 
</project> 

Я посмотрел через сайт, и я знаю, что проблема о включении sfl4j, но, к сожалению, я попытался исключить его, обновить его, добавить зависимость, но каждый попытка не выполняется.

версия, что я могу видеть из hierarchi зависимостей 1.6.1, и та же версия, которая была в спящем режиме ядра POM (но в том, что один объемом является испытанием.

Библиотеки содержит этот класс и метод, но я не знаю, почему Hibernate инструменты не могут найти их.

Я попытался с Spring Tool Suite, язь, и с новой установки затмение Juno.

Я бегу из идей. :(

+0

Ваша проблема, вероятно, аналогична [этой] (http://stackoverflow.com/questions/8252597/slf4j-nosuchmethoderror-on-locationawarelogger). – Thomas

+0

Я пробовал, но это не решило проблему. – Ivan

ответ

3

Просмотрите свой проект pom и Конфигурация eclipse: у вас есть две разные версии log4j/slf4j.

0

Проблема связана с двумя или более версиями одной и той же банки в пути к классам, как указано Дэвидом.

В этой ситуации вы можете попробовать это:

• Ваш Hibernate инструментов плагина (< eclipse_directory>/плагины /) и ваш репозиторий проекта Maven (< user_directory>/м2/хранилище/орг/SLF4J.) Имеют разные Версия для бара SLF4J. Поддерживайте ту же версию в обеих папках (читайте classpath). Сохраните последнюю версию в обоих из них и удалите старый. Это грязный хак, но приемлемый способ сохранить версии jar в синхронизации.

• Еще ​​один (лучший) способ сохранить объекты доступа к данным в отдельном проекте. Создайте простой проект maven POJO и автоматизируйте создание кода с помощью инструментов спящего режима. Импортируйте этот проект в проект, в котором вы поддерживаете бизнес-логику. Это стандартный дизайн в крупных проектах, и, что немаловажно, вам не нужно страдать от конфликта версий.

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

  • Нет связанных вопросов^_^