Проблемы с установкой Tomcat 5.5

Я запускал Tomcat 5.5.23 на CentOS 5.5, но по какой-то причине мне пришлось его переустановить. После установки не запускается. Проверка файла catalina.out привела к этой ошибке. Поиск в Google в течение нескольких часов показал, что результатом было копирование отсутствующего файла jar в каталог (/var/lib/tomcat5/server/lib), что решило проблему, но создало еще одну; на этот раз я получаю следующую ошибку:

Using CATALINA_BASE:   /usr/share/tomcat5
Using CATALINA_HOME:   /usr/share/tomcat5
Using CATALINA_TMPDIR: /usr/share/tomcat5/temp
Using JRE_HOME:       /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64
java.lang.NoClassDefFoundError: org/apache/tomcat/util/log/SystemLogHandler
        at java.lang.Class.getDeclaredConstructors0(Native Method)
        at java.lang.Class.privateGetDeclaredConstructors(Class.java:2406)
        at java.lang.Class.getConstructor0(Class.java:2716)
        at java.lang.Class.newInstance0(Class.java:343)
        at java.lang.Class.newInstance(Class.java:325)
        at org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:225)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:410)
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.util.log.SystemLogHandler
        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:319)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
        ... 7 more

Я без конца гуглил часами и подозреваю, что это не проблема «копирования файлов jar в каталог», а скорее проблема с установленной переменной среды, но проблема в том, что я не уверен, где установить указанную переменную. Хотя для системы не определена переменная CLASSPATH (я полагаю, что она создается в сценарии запуска), но все в tomcat5.conf установлено правильно. Любая помощь будет оценена по достоинству. Ближайшая похожая проблема, которую я обнаружил, была обнаружена этого парня в списке рассылки Tomcat, но, как вы видите, ему уже несколько лет.


person Dark Star1    schedule 19.02.2011    source источник
comment
Я увидел предложенное вами редактирование ответа Алена и отклонил его. Я думаю, вам следует отредактировать свой вопрос, скопировав соответствующую информацию из ответа и комментариев. Я бы начал с горизонтальной линейки и ### Summary of Answer, чтобы сделать важную информацию более заметной. В качестве альтернативы Ален мог бы отредактировать свой ответ, чтобы внести соответствующие комментарии в основной материал. Либо, либо и то, и другое облегчит поиск информации тем, кто придет позже.   -  person Jonathan Leffler    schedule 20.02.2011


Ответы (1)


Первое, что нужно проверить, это то, что у вас есть tomcat-util банка под /usr/share/tomcat5/server/lib

Я заметил, что вы упоминаете /var/lib/tomcat/server/lib, тогда как catalina.out говорит, что CATALINA_HOME соответствует /usr/share/tomcat5, что является более стандартным.

Вам нужно убедиться, что дерево серверов правильно развернуто под /usr/share/tomcat5, если это то, что установлено для CATALINA_HOME.

Вы устанавливали как RPM или просто распаковывали архив с сайта загрузки apache?

Вы запускаете tomcat с /usr/share/tomcat5/bin/startup.sh ? Или с менее стандартной процедурой?

В конце концов, вам нужно что-то вроде

java 
  -classpath /usr/share/tomcat5/bin/bootstrap.jar
  -Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS
  -Dcatalina.base="$CATALINA_BASE"
  -Dcatalina.home="$CATALINA_HOME"
  -Djava.io.tmpdir="$CATALINA_TMPDIR"
   org.apache.catalina.startup.Bootstrap

И эти переменные могут быть определены в /etc/environment (при условии, что redhat/centos не отличаются в этом от debian) или только в сценарии оболочки, обертывающем startup.sh или catalina.sh.

person Alain Pannetier    schedule 19.02.2011
comment
единственное, что находится в этом месте, — это файл catalina.jar, который я туда скопировал. Что касается переменной CATALINA_HOME, для которой задан путь к каталогу /usr/share/tomcat5 (который сам по себе содержит ссылки на путь к каталогу /var/lib.... - person Dark Star1; 19.02.2011
comment
Затем по какой-то причине вы пропустите несколько банок в файле /var/lib/tomcat/server/lib. Чтобы убедиться, я бы скачал весь архив с apache tomcat 5.5 и взорвал его под /var/lib/tomcat, если на это указывает символическая ссылка. - person Alain Pannetier; 19.02.2011
comment
Хм, подожди. Пока только папка server/lib. В разделе conf, shared, webapps и т. д. могут быть важные вещи. - person Alain Pannetier; 19.02.2011
comment
Так что давай. Поскольку вы сказали CentOs, я вдруг подумал, что вы, возможно, находитесь в prod. Я не знаю, как вы установили, RPM или вручную. Я бы выбрал руководство, потому что обновления нужно делать с осторожностью. По сути, скачайте последний архив (5.5.33) и загрузите архив. pipe-untar его под вашим домом каталины. Вы должны быть в порядке. - person Alain Pannetier; 19.02.2011
comment
Мне нужно работать с версией 5.5.23, чтобы отразить производственный сервер. Который оказывается последним из репозиториев CentOS - person Dark Star1; 19.02.2011
comment
Я понимаю. Нет проблем. Используйте http://archive.apache.org/dist/tomcat/tomcat-5/v5.5.23/bin/ вместо этого. Затем выберите пакет apache-tomcat-5.5.23.tar.gz (2007-03-08 21:15 5.7M). Я проверил ваш файл запуска, в основном это старая версия catalina.sh. После того, как вы загрузили архив, сравните ваш dtomcat5 и catalina.sh в корзине, чтобы увидеть, есть ли какие-либо значимые различия. - person Alain Pannetier; 19.02.2011
comment
БЛАГОДАРНОСТЬ!! Я дам вам знать, как это было - person Dark Star1; 19.02.2011
comment
прежде чем я взорвал tar, я решил сравнить структуру каталогов с производственной и заметил, что то, что было в папке /var/lib/tomcat5, является ссылками на jar-файлы в дереве каталогов /usr/share/java/. Почему-то эти ссылки не создаются в папке /var/lib/tomcat5 во время установки. - person Dark Star1; 19.02.2011
comment
Я заметил, что вы использовали openJdk. Я придерживался Sun JVM, поэтому не могу быть на 100% уверен, что они сопоставят, если вы дадите мне ссылку. Однако вы можете спокойно воспроизвести эти ссылки. Нет никаких причин, по которым эти ссылки должны создаваться заново во время распаковки; Tomcat поставляется автономно. Однако люди, разработавшие этот механизм в вашей производственной среде, вероятно, хорошо знали, чего хотели. Если это не слишком долго, просто дайте мне образец. Tomcat часто нуждается в некоторой настройке инфраструктуры, такой как ведение журнала, драйверы jdbc, jmx, ldap, jaas и т. д. - person Alain Pannetier; 19.02.2011
comment
Все это имеет смысл, вы можете повторить это. Если у вас уже есть эти файлы в /usr/share/java, просто выполните ln -s соответственно, в противном случае дополните их тем, что у вас есть в prod или из архива. Любые вопросы относительно одного из них, пожалуйста, спрашивайте. - person Alain Pannetier; 19.02.2011
comment
Большое спасибо. Дам вам знать, как все пойдет после того, как я исправил аварию, которая произошла с производственным сервером :/ - person Dark Star1; 19.02.2011
comment
Мучас грасиас сеньор. Вы действительно помогли. Мне пришлось создать ссылки как в ‹/var/lib/tomcat5/common/lib›, так и в ‹/var/lib/tomcat5/server/lib›, чтобы запустить Tomcat. Примечание для тех, у кого есть похожие проблемы: скопируйте файлы *.renametojar из взорванного tomcat5 tar.gz (ссылку дал мне Ален) в каталог /var/lib/tomcat5/server/lib вместе с созданием необходимых ссылок. - person Dark Star1; 20.02.2011