2012-11-28 3 views
1

Я хочу использовать библиотеку Jodd в java, потому что хочу попробовать Jerry. Для этого я включил в библиотеку, как показано в ответ на this question и использовал следующий код:Java: using Jodd Jerry - NoClassDefFoundError

File file = new File(SystemUtil.getTempDir(), "test.html"); 
NetUtil.downloadFile("http://de.wikipedia.org/wiki/Toastbrot", file); 
Jerry doc = Jerry.jerry(FileUtil.readString(file)); 

Выполнение этого кода производит следующее сообщение об ошибке:

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 
     at jodd.lagarto.LagartoParserEngine.<clinit>(LagartoParserEngine.java:22) 
     at jodd.jerry.Jerry$JerryParser.createLagartoDOMBuilder(Jerry.java:80) 
     at jodd.jerry.Jerry$JerryParser.<init>(Jerry.java:73) 
     at jodd.jerry.Jerry.jerry(Jerry.java:121) 
     at jodd.jerry.Jerry.jerry(Jerry.java:53) 
     at sla.htmlf.Main.test(Main.java:36) 
     at sla.htmlf.Main.main(Main.java:19) 
    Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334) 
     ... 7 more 

at sla.htmlf.Main.test (Main.java:36) at sla.htmlf.Main.main (Main.java:19), конечно, имеет в виду классы моего проекта

Это первый случай, когда я столкнулся с исключением NoClassDefFound. Похоже, что org.slf4j.LoggerFactory отсутствует, но если я не ошибаюсь, это то, что использует библиотека jodd - что тогда должно быть включено там, правильно?

Я действительно ценю некоторые советы/помощь с этим

ответ

1

Как вы можете видеть на, Джодд-Lagarto модуль download page (что Джерри принадлежит) зависит от библиотеки SLF4J регистрации.

Подробнее о logging in Jodd. На этой странице вы также можете найти быстрые шаги, чтобы настроить свою среду и заставить ее работать.

Эти шаги являются:

  • Перейти к http://www.slf4j.org/download.html и скачать дистрибутив SLF4J.
  • Поместите SLF4J-Апи-X.X.X.jar на пути к классам
  • Если вы не хотите протоколирования, просто поставить SLF4J-NOP-X.X.X.jar на пути к классам.
  • В противном случае перейдите по ссылке http://logback.qos.ch/download.html и загрузите дистрибутив LOGback.
  • logback-core.jar и logback-classic.jar на пути к классу.

С SLF4J вы можете выбрать структуру ведения журнала, которую хотите использовать: none, log4j, commons и т. Д .; Авторы Джодда рекомендуют logback.

1

Похоже, вы упускаете slf4j библиотеку, которая в настоящее время ссылается на один из других LIBS.

+0

[страница загрузки] (http://jodd.org/download/index.html) показывает, какие дополнительные зависимости необходимы. – Kai

0

slf4j-api-1.7.2.jar, а также commons-logging-1.1.1.jar отсутствовал

+0

Обратите внимание, что commons-logging - это всего лишь один вариант с slf4j, вы можете использовать любую другую систему ведения журнала. – igr

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