java - Tomcat在Eclipse中不起作用

标签 java eclipse macos tomcat

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

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

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


Tomcat无法从Eclipse启动。
原因是Eclipse中Tomcat的设置未完成。 Eclipse中的Tomcat尚未指向配置文件夹。
解决方案:在“服务器”选项卡中双击Tomcat服务器,然后将出现一个配置窗口。在窗口中,选择Tomcat配置文件夹和部署目标文件夹。
startup.sh无法正常工作。
原因可能是重复的jar问题。我忘了我已经在/ Library / Java / Extensions中复制了整个Struts 2罐子,这些罐子本来是空的。
解决方案:清除该文件夹,然后startup.sh将起作用。
即使在Tomcat运行时也无法加载Web应用程序(已修复了前两个问题)
原因可能是项目中包含了多余的Struts jar。我用谷歌搜索找到了Struts 2所需的罐子,只包括了它们。


原始帖子:
我一直试图在Eclipse中运行Hello World Web应用程序,但是无法发布。

这是我所做的:

-在OS X 10.8上使用Macintosh。

-从Apache下载Tomcat 7,然后将该文件上拉到某个目录下。

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

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

-发布我的Web应用程序。

`

这是我所反对的。

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


--


但是,如果我使用startup.sh启动服务器,然后将war文件手动拖动到webapps文件夹下,则它可以正常工作。战争立即解压缩,我可以加载静态和动态页面。

ps。解决上述问题后,现在我会遇到更多问题。我的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文件夹,我可以看到解压缩的war文件夹复制在webapps文件夹下。

但是,加载应用程序仍然失败。
加载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


--------------------结束对我的帮助者的回应------------------------ ---

最佳答案

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


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


您可以尝试查看tomcat页面。

让我知道事情的后续。

关于java - Tomcat在Eclipse中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20235909/

相关文章:

java - 错误 : 'SDL init failure, reason is: No available video device' when launching AVD

swift - 不同 IBAction 中未解析的标识符(变量)

iphone - 将 iOS (iPhone) 应用移植到 Mac?

java - 在tomcat服务器上运行时找不到文件

java - 索引文件如何影响你的 spring mvc 项目?

java - 为什么我的图片不显示? ( java )

java - 在java代码中添加 boolean 值来检查表状态条件

java - GWT 应用程序/eclipse 插件使 JVM 崩溃

java - 通过 Eclipse 插件下载时,Maven 将源代码和 javadoc 存储在哪里

macos - Composer 不适用于oh-my-zsh