Tomcat 6.0 в Mac OS X - PullRequest
       6

Tomcat 6.0 в Mac OS X

1 голос
/ 21 июня 2010

Привет, я пытаюсь запустить Apache Tomcat 6.0.26 на Mac OS X - Snow Leopard, но безуспешно: (

Я скачал ядро ​​Tomcat из: http://tomcat.apache.org/download-60.cgi разархивировал его в каталоге / Livrary / Tomcat, но когда я пытаюсь запустить его с помощью команды ./bin/startup.sh из журнала / catalina.out журналы, кажется, что он не может найти сервлет-API:

SEVERE: Error deploying configuration descriptor host-manager.xml
java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath()Ljava/lang/String;
    at org.apache.catalina.core.StandardHost$MemoryLeakTrackingListener.lifecycleEvent(StandardHost.java:561)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4462)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:519)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

Во время запуска он входит в консоль CLASSPATH, которую он использует:

Using CLASSPATH:       /Library/Tomcat/bin/bootstrap.jar

Я не пытался развернуть свое собственное приложение (* .war), это просто "чистый" Tomcat.

Ответы [ 2 ]

4 голосов
/ 21 июня 2010

Вероятно, ваш системный путь к классу каким-то образом загрязняется с помощью jar API сервлета до 2.5

Вы можете проверить это, запустив java javax.servlet.http.HttpServlet - должно выдаться NoClassDefFound. Если он выдает NoSuchMethodError, проверьте ваш путь к классу (особенно переменная окружения CLASSPATH и подпапка lib/ext установки JRE).

РЕДАКТИРОВАТЬ : попробуйте следующий код - по крайней мере, он покажет местоположение поврежденной банки:

public class Test {
    public static void main(String[] args) throws Exception {   
        System.out.println(
            Test.class.getClassLoader().getResource("javax/servlet/http/HttpServlet.class"));
    }
}
0 голосов
/ 21 июня 2010

Правильны ли переменные CATALINA_BASE и CATALINA_HOME?

(они должны быть напечатаны вместе с CLASSPATH при запуске).

Я только что попробовал в точности то, что вы сделали (загрузил свежий tomcat 6.0.26 на OS X 10.6.3), разархивировал его (я загрузил core / zip), затем установил все файлы .sh на исполняемый файл: (в папке корзины):

chmod a+x *.sh

После этого запуск startup.sh работал без сбоев.

Я могу только думать, что предыдущие переменные CATALINA конфликтуют?

...