2013-03-05 5 views
1

Прежде всего я новичок в HBase и Jetty 8.Hbase 0.94.xxx с Jetty 8.xxx

Я пытался получить Hbase 0.94.xx и встроенный Jetty 8.x играть хорошо вместе.

Я взял образец кода от Ларса и обновил Hush, чтобы использовать 0,94. Вот обновление HBase 0.94, которое я сделал. https://github.com/yepher/hbase-book/blob/master/hush/pom.xml Когда я меняю версию Jetty с «7.3.1.v20110307» на «8.1.4.v20120524». Ошибка компиляции для «Credential» легко решить путем изменения импорта. Hush сервер будет хорошо, но в конце концов я получаю это исключение:

Exception in thread "main" 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.eclipse.jetty.util.log.JettyAwareLogger.log(JettyAwareLogger.java:601) 
    at 
org.eclipse.jetty.util.log.JettyAwareLogger.warn(JettyAwareLogger.java:425) 
    at org.eclipse.jetty.util.log.Slf4jLog.warn(Slf4jLog.java:64) at 
org.eclipse.jetty.util.component.AbstractLifeCycle.setFailed(AbstractLifeCycle.java:199) 
    at 
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) 
    at com.hbasebook.hush.HushMain.main(HushMain.java:112) 

Это выход из мавена для «включает sl4j»

[hush (master)]$ mvn dependency:tree -Dincludes=org.slf4j 
Unable to find a $JAVA_HOME at "/usr", continuing with system-provided Java... 
[INFO] Scanning for projects... 
Downloading: http://repo1.maven.org/maven2/org/mortbay/jetty/jetty-maven-plugin/8.1.4.v20120524/jetty-maven-plugin-8.1.4.v20120524.pom 
Downloaded: http://repo1.maven.org/maven2/org/mortbay/jetty/jetty-maven-plugin/8.1.4.v20120524/jetty-maven-plugin-8.1.4.v20120524.pom (7 KB at 14.5 KB/sec) 
Downloading: http://repo1.maven.org/maven2/org/mortbay/jetty/jetty-integration-project/8.1.4.v20120524/jetty-integration-project-8.1.4.v20120524.pom 
Downloaded: http://repo1.maven.org/maven2/org/mortbay/jetty/jetty-integration-project/8.1.4.v20120524/jetty-integration-project-8.1.4.v20120524.pom (12 KB at 298.1 KB/sec) 
Downloading: http://repo1.maven.org/maven2/org/mortbay/jetty/jetty-maven-plugin/8.1.4.v20120524/jetty-maven-plugin-8.1.4.v20120524.jar 
Downloaded: http://repo1.maven.org/maven2/org/mortbay/jetty/jetty-maven-plugin/8.1.4.v20120524/jetty-maven-plugin-8.1.4.v20120524.jar (70 KB at 758.4 KB/sec) 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building HBase URL Shortener 1.0 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ hush --- 
[INFO] com.hbasebook:hush:war:1.0 
[INFO] \- org.apache.hbase:hbase:jar:0.94.3:compile 
[INFO] +- org.slf4j:slf4j-api:jar:1.4.3:compile 
[INFO] \- org.slf4j:slf4j-log4j12:jar:1.4.3:compile 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2.987s 
[INFO] Finished at: Tue Mar 05 09:51:40 CST 2013 
[INFO] Final Memory: 8M/81M 
[INFO] ------------------------------------------------------------------------ 

Я пробовал много вещей, как исключить SL4J, Явное включают SL4j , Я уверен, что я пропустил что-то простое, но не совсем уверенное, что это такое.

В качестве другой контрольной точки я пробовал этот проект https://github.com/steveliles/jetty-embedded-spring-mvc-noxml/blob/master/pom.xml, но когда я добавляю HBase/core в pom.xml, я начинаю получать те же проблемы, что и выше.

У кого-нибудь есть pom.xml, который работает для Jetty 8.x и HBase 0.94.xx?

Edit:

Я добавил еще SLF4J исключения, а затем явно включить SLF4J

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

Я обновить проект Хуч здесь с рабочим кодом: https://github.com/yepher/hbase-book

ответ

1

Это исключение поднимается, когда несколько классов LocationAwareLogger с другой версией в вашем пути к классам. Вы можете просто сделать grep -R LocationAwareLogger *.jar в своем каталоге lib и выяснить, какой баннер содержит класс. Тогда вы можете исключить его в свой pom.xml.

EDIT: Я загрузил ваше репо и установил его на свою машину. После того, как я провел grep команду я получил следующие выходы:

[email protected]:hbase-book$ grep -R 'org/slf4j/spi/LocationAwareLogger' hush/target/hush/WEB-INF/lib/*.jar 
Binary file hush/target/hush/WEB-INF/lib/slf4j-api-1.6.4.jar matches 
[email protected]:hbase-book$ grep -R 'org/slf4j/LoggerFactory' hush/target/hush/WEB-INF/lib/*.jar 
Binary file hush/target/hush/WEB-INF/lib/slf4j-api-1.6.4.jar matches 

Похоже, что вы не исключили slf4j полностью используя неправильную комбинацию groupId/artifactId. Вам нужно обновить свой pom и снова проверить.

Обратите внимание, что версия библиотеки журналов, содержащаяся в причале, может быть конфликтом с hbase, нет общего решения, вам нужно выяснить, какую версию использовать и исключить другую.

+0

Когда я исключаю баночку я получаю эту ошибку при запуске: Исключение в потоке «основного» java.lang.NoClassDefFoundError: орг/SLF4J/LoggerFactory \t в org.apache.zookeeper.ZooKeeper. (ZooKeeper.java:93) – Yepher

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