LINUX.ORG.RU

[maxcom, hizel, придите!][ЛК ЛОРа]slf4j-jcl vs jcl-over-slf4j


0

2

Я тут уже писал hizel'ю, что столкнулся с траблой при попытке поднять локальную копию ЛОРа по мануалке с вики гитхаба на чистой 14-ой Fedora с maven2 и всем прочим необходимым плюс даже выключенным SeLinux'ом.
Собирается при mvn package всё без ворнингов и ошибок, все 70 или сколько тестов проходит, но при запуске mvn jetty:run залупляется с вот таким выхлопом

SEVERE: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'solr' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
...
Caused by: java.lang.IllegalStateException: Detected both jcl-over-slf4j.jar AND slf4j-jcl.jar on the class path, preempting StackOverflowError. See also http://www.slf4j.org/codes.html#jclDelegationLoop for more details.
	at org.slf4j.impl.JCLLoggerFactory.<clinit>(JCLLoggerFactory.java:64)
...
WARNING: Failed startup of context o.m.j.p.JettyWebAppContext{/,file:/usr/src/lorsource/target/lor-1.0-SNAPSHOT/},file:/usr/src/lorsource/target/lor-1.0-SNAPSHOT/
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'solr' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:288)
...
Caused by: java.lang.IllegalStateException: Detected both jcl-over-slf4j.jar AND slf4j-jcl.jar on the class path, preempting StackOverflowError. See also http://www.slf4j.org/codes.html#jclDelegationLoop for more details.
	at org.slf4j.impl.JCLLoggerFactory.<clinit>(JCLLoggerFactory.java:64)
Весь выхлоп тут. Выхлоп сборки mvn package тут

Поскольку первый раз я делал всё глубокой ночью, а в этот рано утром, то в голову пришло просветление и я докопался, что у меня имеются в системе и действительно за'loop'ляющиеся jcl-over-slf4j.jar and slf4j-jcl.jar on the class path.
ls -la /usr/share/maven2/poms | grep jcl
-rw-r--r--. 1 root root     993 Feb 25  2010 JPP.slf4j-jcl104-over-slf4j.pom
-rw-r--r--. 1 root root    2464 Feb 25  2010 JPP.slf4j-jcl-over-slf4j.pom
-rw-r--r--. 1 root root    1558 Feb 25  2010 JPP.slf4j-jcl.pom

ls -la /usr/share/maven2/lib | grep jcl
lrwxrwxrwx. 1 root root   40 Jul 23 11:16 slf4j_jcl-over-slf4j.jar -> /usr/share/java/slf4j/jcl-over-slf4j.jar

ls -la /usr/share/java/slf4j | grep jcl
lrwxrwxrwx.  1 root root    25 Jul 23 11:15 jcl104-over-slf4j-1.5.11.jar -> jcl-over-slf4j-1.5.11.jar
lrwxrwxrwx.  1 root root    28 Jul 23 11:15 jcl104-over-slf4j.jar -> jcl104-over-slf4j-1.5.11.jar
-rw-r--r--.  1 root root  7568 Feb 25  2010 jcl-1.5.11.jar
lrwxrwxrwx.  1 root root    14 Jul 23 11:15 jcl.jar -> jcl-1.5.11.jar
-rw-r--r--.  1 root root 17343 Feb 25  2010 jcl-over-slf4j-1.5.11.jar
lrwxrwxrwx.  1 root root    25 Jul 23 11:15 jcl-over-slf4j.jar -> jcl-over-slf4j-1.5.11.jar
total 12

ls -la /usr/share/jetty/lib/jsp-2.0 | grep jcl
lrwxrwxrwx. 1 root root   40 Jul 23 11:16 [slf4j][jcl-over-slf4j].jar -> /usr/share/java/slf4j/jcl-over-slf4j.jar

ls -la /root/.m2/repository/org/slf4j/slf4j-jcl/1.6.1/ | grep jcl
-rw-r--r--. 1 root root    7728 Jul 23 11:34 slf4j-jcl-1.6.1.jar
-rw-r--r--. 1 root root      40 Jul 23 11:34 slf4j-jcl-1.6.1.jar.sha1
-rw-r--r--. 1 root root    1557 Jul 23 11:33 slf4j-jcl-1.6.1.pom
-rw-r--r--. 1 root root      40 Jul 23 11:33 slf4j-jcl-1.6.1.pom.sha1

ls -la /usr/src/lorsource/target/lor-1.0-SNAPSHOT/WEB-INF/lib | grep jcl
-rw-r--r--. 1 root root    7728 Jul 23 11:34 slf4j-jcl-1.6.1.jar
Но поскольку я даже не представляю пока что такое «class path» и где он прописан в проекте, я терпеливо жду, кто же мне подскажет, что надо скрыть от сборщика и как? :)

Для статистики: на debian squeeze поднимается по мануалу без лишних движений

sdio ★★★★★ ()
Ответ на: комментарий от sdio

Спасибо за инфу, конечно, но я хотел с fedora'ой поковыряться, на Debian я и так давно сижу, не то чтобы приелось, как это говорят «хочется новых ощущений» :)
И хотя это не на домашнем компе, а на виртуалке в универе по удалёнке и поставить squeeze займёт минут 15, всё равно охота додолбать на fedora'e. Нужные и не очень патчи подождут :D

adriano32 ★★★ ()

Ну собственно и всё сделал сам методом научного тыка.
/usr/share/java/slf4j просто спрятал, после чего указанные ошибки ушли. Если мне кто-нибудь ткнёт носом в то, что почитать по поводу этих логгеров, зачем они нужны и почему они так устроены, то буду премного благодарен.
Стало быть УМВР. post-factum, ты следующий на очереди :)

adriano32 ★★★ ()
Ответ на: комментарий от adriano32

>Если мне кто-нибудь ткнёт носом в то, что почитать по поводу этих логгеров

у них целая сантабарбара на эту тему, не думаю что это знание тебе что-то даст полезного

hizel ★★★★★ ()
Ответ на: комментарий от hizel

Ладно. И да, спасибо за совет с HTMLPathPrefix, без него не работает. Да и memcached пришлось ставить и запускать кстати. Можете в вики дописать.

adriano32 ★★★ ()
Ответ на: комментарий от hizel

вот оно у меня при незапущенном memcached оно ругалось на отсутствие memcached на порту 11211. И кажется не работало. ИЛи я испушался ругани и не стал проверять. Неважно.

adriano32 ★★★ ()
Ответ на: комментарий от adriano32

>И да, htaccess переписывать тоже желательно наверное.

я так не считаю, htaccess это только индейская плюшка

hizel ★★★★★ ()
Ответ на: комментарий от hizel

конкренто эта пачуха:

<rule>
    <condition name="host" operator="notequal">^www\.linux\.org\.ru</condition>
    <condition name="host" operator="notequal">^beta\.linux\.org\.ru</condition>
    <condition name="host" operator="notequal">^test-lor</condition>
    <condition name="host" operator="notequal">^localhost</condition>
    <condition name="host" operator="notequal">^10.0.2.2</condition>  
    <condition name="host" operator="notequal">^$</condition>
    <from>^/(.*)</from>
    <to type="redirect" last="true">http://www.linux.org.ru/$1</to>
  </rule>

hizel ★★★★★ ()

HTTP ERROR: 503

Problem accessing /. Reason:

Service Unavailable

Powered by Jetty://

Это?

visual ★★★ ()

очень похоже что в Fedora криво запакетировали maven. Попробуй стянуть maven с apache.org. Его никак специально ставить не нужно, просто разверни куда-нибудь и запускай.

maxcom ★★★★★ ()
Ответ на: комментарий от visual

В ОП написано, когда я об этом писал hizel'ю. Дружище, ты знал как мне помочь?

adriano32 ★★★ ()
Ответ на: комментарий от hizel

на memcached можно не обращать внимания, без него все работает

maxcom ★★★★★ ()
Ответ на: комментарий от visual

это означает что lor по какой-то причине не смог подняться, надо смотреть лог и разбираться

maxcom ★★★★★ ()
Ответ на: комментарий от maxcom

Хм, так он вытягивался со всяких там repo1.maven.org blabla, по крайней мере пытался. Могу в логах прокси посмотреть точно, но то что репы, с которых вытянулся мне maven2 не было федоровских, точно.

adriano32 ★★★ ()
Ответ на: комментарий от maxcom

У меня такая ошибка была и при этом в логе запуска было что-то с NegativeArraySizeException кажется. Ну и то, что описано в ОП, но под это я костыьл подставил.

adriano32 ★★★ ()
Ответ на: комментарий от adriano32

> Хм, так он вытягивался со всяких там repo1.maven.org blabla, по крайней мере пытался. Могу в логах прокси посмотреть точно, но то что репы, с которых вытянулся мне maven2 не было федоровских, точно.

Это нормально, то что ты накачал другая инсталяция maven подхватит.

А вот то что лежит в /usr это пришло из дистрибутива, зачем оно подключается к jetty когда я это не просил не понятно

maxcom ★★★★★ ()
Ответ на: комментарий от hizel

HTMLPathPrefix помоему только для скринов и юзерпиков нужен, а их все равно в комплекте нет. И с некорректной настройкой имхо должно работаеть все, кроме upload'а изображений

maxcom ★★★★★ ()
Ответ на: комментарий от maxcom

Вот чёрт, перепроверил и точно, если не менять, работает. Ужас какой криворукий.

adriano32 ★★★ ()
Ответ на: комментарий от adriano32

я потом поправлю это место чтобы можно было отлаживать upload фотографий без ковыряния в настройках

maxcom ★★★★★ ()
Ответ на: комментарий от maxcom

Да я эт о себе, вот уж точно hizel сказал, что обезьяна осилит поднять :)
Меня немного смутила вляшаяся масса ошибок от отсутствия memcached на 11211 порту и пути, и главное не обратил внимание, что фоток ни там, ни там нет, а какая разница тогда, верно или неверно указан.
Ну хоть глюк с fedora разрулил. Не нужно выходит родной федоровский maven2 ставить? /usr/share/java/slf4j это её рук дело? (выше написано)

adriano32 ★★★ ()
Ответ на: комментарий от adriano32

> Ну хоть глюк с fedora разрулил. Не нужно выходит родной федоровский maven2 ставить? /usr/share/java/slf4j это её рук дело? (выше написано)

Похоже на то. Я еще поковыряю это, может как-нибудь получится и с сборкой из федоры запускаться

maxcom ★★★★★ ()
Ответ на: комментарий от maxcom

Странно просто, он какие-то пакеты поставил (yum install maven2), но метров 33 (судя по du -s .m2) с интернета докачивал всё равно после этого при запуске mvn package, mvn clean (да-да, представь, первый раз он не смог всё выкачать, написал что не хватает пакета, я запустил mvn clean и он выкачал недостающий jar'ик во время чистки :D).

adriano32 ★★★ ()
Ответ на: комментарий от post-factum

так что лавочку поправили можно переслить код или как?

visual ★★★ ()
Ответ на: комментарий от visual

Сформулируй свой вопрос понятнее, пожалуйста. Для этого попробуй воспользоваться знаками препинания.

post-factum ★★★★★ ()
Ответ на: комментарий от post-factum

чёртовы цифры,

Вопрос в следующем, кто-то что-то менял в исходниках в вчера? я смотрю у народа собирается и работает.

Вот спрашиваю, сегодня сливать с репозитория поправленное или разбираться с логами?.

visual ★★★ ()
Ответ на: комментарий от visual

Логи выкладывай, рассказывай чё и как делал. Тут полон тред Осиляторов, ты один к ним не относишься :D

adriano32 ★★★ ()
Ответ на: комментарий от visual

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

post-factum ★★★★★ ()
Ответ на: комментарий от adriano32

> Логи выкладывай, рассказывай чё и как делал. Тут полон тред Осиляторов, ты один к ним не относишься :D

томкот у меня то работает.

Ладно приду домой ещё раз гляну.

visual ★★★ ()
Ответ на: комментарий от moradan

более интересно что такое сборщики Fedora сделали с maven, что он подставляет свою конкретную реализацию slf4j к приложению при запуске jetty-maven-plugin

maxcom ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.