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. Что может быть неправильно?
Ответы
Ответ 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