2013-04-04 58 views
2

我看過並嘗試了各種解決SLF4J相關問題的解決方案,但沒有任何工作。我想要做的就是使用STS內部的Hibernate插件。我只需點擊Hibernate透視圖,然後點擊我的項目上的向下箭頭和數據庫上的向下箭頭,就會發生此異常。Eclipse STS Hibernate錯誤:「獲取數據庫的子項」。 org.slf4j.spi.LocationAwareLogger.log

我在Hibernate控制檯的屬性中看到有一個Eclipse日誌文件dir指向一個logback。我必須在我的pom的某個地方設置logback嗎?

我用我的設置從我在網上找到的eclipse教程。唯一的區別是我使用特定的STS版本和更新版本的Spring和Hibernate。我已經設置了休眠配置和控制檯配置。

任何幫助,讓這個Hibernate插件正確使用Maven日誌記錄將非常感激。提前致謝!!

以下是我的設置:

STS V3.2,MySQL數據庫,服務器的vFabric(自帶STS),使用Maven

POM版本:

<java-version>1.6</java-version> 
    <spring.version>3.2.2.RELEASE</spring.version> 
    <spring.security.version>3.1.3.RELEASE</spring.security.version> 
    <org.aspectj-version>1.6.10</org.aspectj-version> 
    <org.slf4j-version>1.7.2</org.slf4j-version> 
    <org.apache.tiles>2.2.2</org.apache.tiles>  
    <mysql>5.1.24</mysql>    
    <hibernate.version>4.1.5.Final</hibernate.version> 
    <junit.version>4.11</junit.version> 

spring,hibernate的&記錄部分:

<!-- Spring --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${spring.version}</version> 
     <exclusions> 
      <!-- Exclude Commons Logging in favor of SLF4j --> 
      <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <!-- Hibernate --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency>    
    <!-- Saw this fix online and was trying - doesn't work, temp commented out 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId>   
     <version>4.3.1.Final</version> 
     <exclusions> 
      Exclude SLF4j to avoid version conflicts (we have 1.6.2, this drags in 1.6.1) 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-api</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.common</groupId> 
     <artifactId>hibernate-commons-annotations</artifactId> 
     <version>4.0.1.Final</version> 
     <classifier>tests</classifier> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.0-api</artifactId> 
     <version>1.0.1.Final</version> 
    </dependency> 
    END Saw this fix online and was trying - doesn't work, temp commented out --> 

    <dependency> 
     <groupId>javax.validation</groupId> 
     <artifactId>validation-api</artifactId> 
     <version>1.0.0.GA</version> 
     <scope>provided</scope> 
    </dependency>  


<!-- Logging -->   
    <dependency> 
     <groupId>org.jboss.logging</groupId> 
     <artifactId>jboss-logging</artifactId> 
     <version>3.1.0.CR2</version> 
    </dependency>  
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>${org.slf4j-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jcl-over-slf4j</artifactId> 
     <version>${org.slf4j-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>${org.slf4j-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.16</version> 
    </dependency> 

以下是堆棧跟蹤:

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:54) 

謝謝!我實際上最終只是在記錄數分鐘的時候發表評論,而讓Hibernate reveng工具做它的事情。通過這篇文章forum.hibernate.org/viewtopic.php?p=2441023然後我讀了他們,一切都很好! :D -

回答

1

NoSuchMethodError on LocationAwareLogger.log()帶有6個參數的方法是在類路徑中使用版本1.6之前的版本進行slf4j綁定的症狀。 'mvn dependency:tree'應該儘可能多地表示,即你有一個較老的綁定,比如slf4j-log4j-1.5.jar

+0

謝謝!我實際上最終只是在記錄數分鐘的時候發表評論,而讓Hibernate reveng工具做它的事情。通過這篇文章https://forum.hibernate.org/viewtopic.php?p=2441023然後我讀了他們,一切都很好! :d – Dguti 2013-05-07 18:45:00

相關問題