Подтвердить что ты не робот

Java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory

Казалось бы, проблема с запуском моего приложения Java:

Исключение в потоке "main" java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory at org.apache.catalina.util.LifecycleBase. (LifecycleBase.java:37) Вызывается: java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory at java.net.URLClassLoader $1.run(URLClassLoader.java:366) в java.net.URLClassLoader $1.run(URLClassLoader.java:355) в java.security.AccessController.doPrivileged(собственный метод) в java.net.URLClassLoader.findClass(URLClassLoader.java:354) в java.lang.ClassLoader.loadClass(ClassLoader.java:423) в sun.misc.Launcher $AppClassLoader.loadClass(Launcher.java.308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356)... еще 1

Пробовал решение здесь: java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory

Но я уже вижу tomcat-juli.jar. Также я использую Tomcat 7. Что может быть неправильно?

4b9b3361

Ответ 1

Ваш vm не найдет класс org/apache/juli/logging/LogFactory, проверьте, присутствует ли этот класс в tomcat-juli.jar, который вы используете (разархивируйте и просматривайте файл), если он не загружает библиотеку с веб-сайта apache else если он присутствует, поставьте tomcat-juli.jar в путь (каталог lib), который Tomcat использует для загрузки классов. Если ваш Tomcat не находит его, вы можете скопировать банку в каталог lib из JRE, который вы используете.

Ответ 2

Если вы используете jsvc для запуска tomcat как tomcat (запустите /etc/init.d/tomcat как root), отредактируйте /etc/init.d/tomcat и добавьте $CATALINA_HOME/bin/tomcat-juli.jar в CLASSPATH.

Ответ 3

Это случилось со мной, потому что я использовал файл Tomcat 5.5 catalina.sh с установкой Tomcat 7. Использование catalina.sh, поставляемое с установкой Tomcat 7, устранило проблему.

Ответ 4

Я столкнулся с этой проблемой при использовании tomcat-embed-core::7.0.47, от Maven. Я не уверен, почему они не добавили tomcat-util в качестве зависимости от времени выполнения, поэтому я добавил свою собственную зависимость от выполнения в свой собственный проект.

<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-util</artifactId>
  <version><!-- version from tomcat-embed-core --></version>
  <scope>runtime</scope>
</dependency>

Ответ 5

У меня была такая же проблема, что мне помогло:

  • Щелкните правой кнопкой мыши проект.
  • Нажмите " Свойства"
  • Перейти к пути сборки Java
  • И затем: Библиотеки
  • Там, нажмите: Добавить внешние банки
  • Добавить: '' Путь /To/Tomcat/Bin/tomcat -juli.jar

Готово.

Ответ 6

В нашем случае использовалась неправильная версия плагина Sysdeo Tomcat для Eclipse 3.5. Исправление:

  • Используйте tomcatPluginV33 вместо tomcatPluginV321 (извлечь в C:\eclipse\dropins)
  • Убедитесь, что DevloaderTomcat7.jar был помещен в папку tomcat lib
  • В окне > Настройки > Tomcat установите версию Tomcat в 7.x

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

Ответ 7

В Ubuntu 14.04 LTS

/usr/share# mv /opt/tomcat/apache-tomcat-7.0.56/ tomcat7

исправил проблему для меня. Там была символическая ссылка на /opt. Внутри этого каталога opt есть где.. /../java ссылки, которые не будут указывать на /usr/share/java, поскольку файлы физически были в/opt