【问题标题】:Tomcat 6.0 on Mac OS XMac OS X 上的 Tomcat 6.0
【发布时间】:2011-03-06 10:35:10
【问题描述】:

嘿,我正在尝试在 Mac OS X - Snow Leopard 上运行 Apache Tomcat 6.0.26,但没有运气:(

我已经从以下位置下载了 Tomcat 核心:http://tomcat.apache.org/download-60.cgi 在 /Livrary/Tomcat 目录中解压缩它,但是当我尝试使用 log/catalina.out 日志中的 ./bin/startup.sh 命令运行它时,它似乎是它找不到servlet-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。

【问题讨论】:

    标签: java apache macos tomcat classpath


    【解决方案1】:

    您的系统类路径可能会被 2.5 之前的 servlet API jar 污染。

    您可以通过运行 java javax.servlet.http.HttpServlet 来检查它 - 它应该抛出 NoClassDefFound。如果抛出NoSuchMethodError,请检查您的类路径(尤其是CLASSPATH 环境变量和lib/ext JRE 安装的子文件夹)。

    编辑:尝试以下代码 - 至少它会显示有问题的 jar 的位置:

    public class Test {
        public static void main(String[] args) throws Exception {   
            System.out.println(
                Test.class.getClassLoader().getResource("javax/servlet/http/HttpServlet.class"));
        }
    }
    

    【讨论】:

    • 我没有设置 CLASSPATH 变量,在 /Library/Java/Home/lib/ext 中找不到 servlet API,但它会抛出 NoSuchMethodError
    • 谢谢 :),使用您的代码,我找到了包含 HttpServlet 的 jar。这是我在 /Users/giolekva/Lirary/Java/Extensions 目录中拥有的 Google 的 Closure 库。再次感谢:)
    【解决方案2】:

    你的 CATALINA_BASE 和 CATALINA_HOME 变量是否正确?

    (它们应该在启动时与 CLASSPATH 一起打印)。

    我刚刚尝试了你所做的(在 OS X 10.6.3 上下载了一个新的 tomcat 6.0.26),解压缩它(我下载了 core/zip),然后将所有 .sh 文件设置为可执行文件: (在 bin 文件夹中):

    chmod a+x *.sh
    

    之后,运行 startup.sh 就很顺利了。

    我只能认为之前的 CATALINA 变量有冲突?

    【讨论】:

    • 我试过“chmod a+x *.sh”,但结果是一样的。以下是 ./startup.sh 命令的完整日志: Using CATALINA_BASE: /Library/Tomcat Using CATALINA_HOME: /Library/Tomcat Using CATALINA_TMPDIR: /Library/Tomcat/temp Using JRE_HOME: /Library/Java/Home Using CLASSPATH: /Library/Tomcat /bin/bootstrap.jar
    猜你喜欢
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 2011-09-09
    • 1970-01-01
    • 2011-08-24
    • 2012-08-09
    • 1970-01-01
    相关资源
    最近更新 更多