java - .War 可以在 Windows 上部署但无法在 Linux 服务器 (Tomcat 7) 上部署

标签 java linux deployment tomcat7 web-deployment

如标题所述,我尝试使用 Tomcat 7 部署的 .War 文件无法在运行 Linux 的机器上运行。它确实可以在 Windows 上运行,当然也可以与 Tomcat 7 一起部署。

我试图单独查找问题并在包括本论坛在内的网络上搜索相关问题,但到目前为止没有成功。这就是我创建此线程以寻求帮助/提示的原因。

我查到的错误信息如下:

Sep 14, 2015 4:46:05 PM org.apache.catalina.deploy.NamingResources cleanUp
WARNING: Failed to retrieve JNDI naming context for container [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SmartHomeReasoner]] so no cleanup was performed for that container
javax.naming.NameNotFoundException: Name [comp/env] is not bound in this Context. Unable to find [comp].
        at org.apache.naming.NamingContext.lookup(NamingContext.java:819)
        at org.apache.naming.NamingContext.lookup(NamingContext.java:167)
        at org.apache.catalina.deploy.NamingResources.cleanUp(NamingResources.java:986)
        at org.apache.catalina.deploy.NamingResources.stopInternal(NamingResources.java:968)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
        at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5676)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:141)
        at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1256)
        at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:692)
        at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:217)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:213)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:610)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)

最佳答案

实际上有 2 个问题导致了这个问题。

为了解决这个问题,我必须:

*在出现任何错误后,请非常仔细地检查 web.xml,例如不存在我们已经定义的东西的 servlet,例如驱动程序被定义了两次,这意味着它已经在某处定义并且还在 web.xml 中定义。

*删除项目的..\WEB-INF\lib文件夹下的servlet。例如。 javax.servlet-api-3.0.1.jar + javax.servlet-api-3.1.0.jar 在这种情况下被删除。 注意我什至有可能在项目级别相互冲突的 jar,但我仍然能够在 Windows 上成功部署,但不能在 Linux 上部署。

相信我,我提到的两件事都可能是个问题,如果您从其他开发人员那里接手工作时很可能会出现这种情况。

关于java - .War 可以在 Windows 上部署但无法在 Linux 服务器 (Tomcat 7) 上部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32572737/

相关文章:

java - 使用 NamedQuery 进行内连接?

java - Spark 在具有 2 个工作线程的集群上的 JdbcRDD 中抛出 NullPointerException

linux - 如何在 bash 中运行循环以匹配字符串并执行另一个命令 ONCE

jakarta-ee - 在WebSphere 6中部署的EAR的build.xml示例

c - 暂停执行 C 代码的 exe

java - 如何从线程返回值(java)

java - 如何在不创建java对象的情况下从包内的所有类访问方法

python - 在 Linux 中结合两个 ping 命令

linux - GNU Automake - dist_bin_SCRIPTS 如何工作,我可以更改它吗?

python - 部署 Python 程序时出现问题(用 py2exe 打包)