Tomcat不在Eclipse中工作

时间:2013-11-27 07:01:14

标签: java eclipse macos tomcat

我简直不敢相信我花了几天时间来解决这个问题,可能部分是因为我对Mac并不熟悉。好的,发布我的解决方案日记。希望它对其他人有所帮助。

遇到问题:     1.第一个问题是Tomcat无法从Eclipse启动,但可以通过startup.sh启动(locahost:8080页面无法加载)     2.然后,经过一些尝试,即使startup.sh也行不通。     3.修复前两个问题后,可以加载locahost:8080页面,但无法加载应用程序。 404错误 - 即使war文件夹正确放置在webapps文件夹中,也会显示未找到资源。当Tomcat引用Struts 2应用程序时,会发生一些ClassNotFoundException或MethodNotDefinedException。

解决每个问题的原因和解决方法。

  1. 无法从Eclipse启动Tomcat。 原因是Eclipse中的Tomcat设置未完成。 Eclipse中的Tomcat尚未指向配置文件夹。 解决方案:在“服务器”选项卡中双击Tomcat服务器,将出现配置窗口。在窗口中,选择Tomcat配置文件夹和部署目标文件夹。

  2. startup.sh不起作用。 原因可能是重复的jar问题。我忘了我已经将/ Library / Java / Extensions中的整个Struts 2 jar复制了,这些jar原本是空的。 解决方案:清除该文件夹,startup.sh将起作用。

  3. 即使Tomcat正在运行,也无法加载Web应用程序(之前的2个问题已修复) 原因可能是多余的Struts jar包含在项目中。我用谷歌搜索为Struts 2找到必要的罐子,只包括它们。

  4. 原帖: 我一直在尝试在Eclipse中运行Hello World Web应用程序但无法发布。

    以下是我的工作:

    - 在OS X 10.8上使用Macintosh。

    - 从Apache下载Tomcat 7,并在某个目录下上传文件。

    - 使用“export”命令创建某些环境变量,如$ CATALINA_BASE和$ CATALINA_HOME。

    - 在Eclipse中,创建一个新的服务器作为Tomcat 7,将其指向上面的解压缩的Tomcat目录,并将Web应用程序(编译无错误)项目添加到Tomcat中

    - 发布我的网络应用程序。

    `

    这是我反击的内容。

    当Eclipse中的服务器正在运行时,我收到404错误,找不到资源。我检查了server.xml,添加了上下文引用。但是在Tomcat的webapps文件夹中,没有添加war文件。即使我键入了locahost:8080,我仍然会收到404错误而不是tomcat“默认页面”。

      -

    然而,如果我使用startup.sh启动服务器,并在webapps文件夹下手动拖动war文件,它就有效。战争立即解压缩,我可以加载静态和动态页面。

    P.S。一旦我的问题解决了,我现在遇到了更多问题。我的startup.sh现在无法启动服务器。每次运行它时,它似乎都会消除它所关注的环境变量的值。

    ----------------对我的助手公司的回应-------------------------- ---------- 到Keerthi Ramanathan:catalina.out内容

    Nov 27, 2013 10:26:50 PM org.apache.catalina.core.AprLifecycleListener init
    INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
    Nov 27, 2013 10:26:50 PM org.apache.coyote.AbstractProtocol init
    INFO: Initializing ProtocolHandler ["http-bio-8080"]
    Nov 27, 2013 10:26:50 PM org.apache.coyote.AbstractProtocol init
    INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
    Nov 27, 2013 10:26:50 PM org.apache.catalina.startup.Catalina load
    INFO: Initialization processed in 800 ms
    Nov 27, 2013 10:26:50 PM org.apache.catalina.core.StandardService startInternal
    INFO: Starting service Catalina
    Nov 27, 2013 10:26:50 PM org.apache.catalina.core.StandardEngine startInternal
    INFO: Starting Servlet Engine: Apache Tomcat/7.0.47
    Nov 27, 2013 10:26:50 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory /usr/local/apache-tomcat-7.0.47/webapps/docs
    Nov 27, 2013 10:26:50 PM org.apache.tomcat.websocket.server.WsSci onStartup
    INFO: JSR 356 WebSocket (Java WebSocket 1.0) support is not available when running on Java 6. To suppress this message, run Tomcat on Java 7, remove the WebSocket JARs from $CATALINA_HOME/lib or add the WebSocketJARs to the tomcat.util.scan.DefaultJarScanner.jarsToSkip property in $CATALINA_BASE/conf/catalina.properties. Note that the deprecated Tomcat 7 WebSocket API will be available. 
    Nov 27, 2013 10:26:50 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory /usr/local/apache-tomcat-7.0.47/webapps/examples
    Nov 27, 2013 10:26:51 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory /usr/local/apache-tomcat-7.0.47/webapps/host-manager
    Nov 27, 2013 10:26:51 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory /usr/local/apache-tomcat-7.0.47/webapps/manager
    Nov 27, 2013 10:26:51 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory /usr/local/apache-tomcat-7.0.47/webapps/ROOT
    Nov 27, 2013 10:26:51 PM org.apache.coyote.AbstractProtocol start
    INFO: Starting ProtocolHandler ["http-bio-8080"]
    Nov 27, 2013 10:26:51 PM org.apache.coyote.AbstractProtocol start
    INFO: Starting ProtocolHandler ["ajp-bio-8009"]
    Nov 27, 2013 10:26:51 PM org.apache.catalina.startup.Catalina start
    INFO: Server startup in 1075 ms
    java.lang.NoSuchMethodError: org.apache.juli.ClassLoaderLogManager.setUseShutdownHook(Z)V
        at org.apache.catalina.startup.Catalina.start(Catalina.java:719)
        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:322)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:456)
    Nov 27, 2013 10:26:51 PM org.apache.coyote.AbstractProtocol pause
    INFO: Pausing ProtocolHandler ["http-bio-8080"]
    Nov 27, 2013 10:26:51 PM org.apache.coyote.AbstractProtocol pause
    INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
    Nov 27, 2013 10:26:51 PM org.apache.catalina.core.StandardService stopInternal
    INFO: Stopping service Catalina
    Nov 27, 2013 10:26:51 PM org.apache.coyote.AbstractProtocol stop
    INFO: Stopping ProtocolHandler ["http-bio-8080"]
    Nov 27, 2013 10:26:51 PM org.apache.coyote.AbstractProtocol stop
    INFO: Stopping ProtocolHandler ["ajp-bio-8009"]
    Nov 27, 2013 10:26:51 PM org.apache.coyote.AbstractProtocol destroy
    INFO: Destroying ProtocolHandler ["http-bio-8080"]
    Nov 27, 2013 10:26:51 PM org.apache.coyote.AbstractProtocol destroy
    INFO: Destroying ProtocolHandler ["ajp-bio-8009"]
    Exception in thread "Thread-2" java.lang.NoSuchMethodError: org.apache.juli.ClassLoaderLogManager.shutdown()V
        at org.apache.catalina.startup.Catalina$CatalinaShutdownHook.run(Catalina.java:920)
    

    -

    到克里什

    通过选择单选按钮“使用Tomcat安装....”我可以在加载localhost时看到一个好的页面:8080

    通过设置webapps文件夹的部署路径,我可以看到在webapps文件夹下复制的解压缩war文件夹。

    但是,加载应用程序仍然失败。 加载localhost:8080 / HellowWorldStruts2 / index.jsp或localhost:8080 / HellowWorldStruts2 / index.jsp(忽略其他w的错误,它是项目中的拼写错误)仍然给出了404错误和描述请求的资源不是可用。但是,index.jsp位于war文件夹下。

    我在部署期间获得了这些反馈

    SEVERE: Exception starting filter struts2
    java.lang.NoClassDefFoundError: javax/servlet/Filter
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1617)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
        at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
        at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
        at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:142)
        at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
        at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
        at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1120)
        at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1678)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:680)
    Caused by: java.lang.ClassNotFoundException: javax.servlet.Filter
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        ... 35 more
    Nov 28, 2013 12:09:20 AM org.apache.catalina.core.StandardContext startInternal
    SEVERE: Error filterStart
    Nov 28, 2013 12:09:20 AM org.apache.catalina.core.StandardContext startInternal
    SEVERE: Context [/HellowWorldStruts2] startup failed due to previous errors
    

    --------------------对我的助手公司的最终回应--------------------- ------

1 个答案:

答案 0 :(得分:1)

您可以尝试以下更改Eclipse处理Tomcat的方式。

  • 在Eclipse中,转到“服务器”选项卡,然后双击您拥有的Tomcat实例。这会打开一个标签
  • 在ab中,单击“服务器位置”部分以展开视图(如果已折叠)
  • 选择第二个单选按钮,显示“使用Tomcat安装(控制Tomcat安装)”
  • 还可以通过单击“浏览”按钮将部署路径更改为tomcat安装中webapps目录的路径。就我而言,它被设置为“D:\ Apps \ apache-tomcat-7.0.47 \ webapps”
  • 单击工具栏上的“保存”按钮,然后从“服务器”选项卡
  • 重新启动Tomcat实例

您可以尝试查看tomcat页面。

让我知道它是怎么回事。