我在过去6到7个小时的努力中试图弄清楚我的Apache Tomcat服务器出了什么问题。在我的所有项目中,jdk
版本已从1.6
切换为1.8
。
为了解决version conflict
,我通过here的帮助验证了Tomcat版本的编译版本和JVM是否相同。
对于具有相同路径错误的多个上下文,我知道我需要删除server.xml
中的重复上下文标记。所以,首先我检查Servers项目(当你在Eclipse中添加Apache Tomcat Server时自己创建)并在那里找不到。所以,我深入研究了目录(Eclipse WorkSpace)metadata\.plugins\org.eclipse.wst.server.core\tmp3\conf
并在那里删除了重复的Context标签,并在here的帮助下。
现在,当我创建一个新的动态Web项目时,一切正常,我能够看到网页。但是如果我尝试访问那些jdk发生变化的旧项目的任何HTML,XHTML文件,这个org.apache.catalina.LifecycleException
会继续弹出,服务器无法启动,因此这些重复的Context标签继续构建每次启动服务器时都会反复出现。
我的旧Web应用程序项目现在似乎都没有用。
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine [卡塔利娜] .StandardHost [本地主机] .StandardContext [/ EdBurns_ChrisSchalk]] ..... 严重:子容器在启动时失败 java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine [卡塔利娜] .StandardHost [本地主机]] .... 引起:java.lang.RuntimeException:意外的元素值类型 注释:0
如何防止在 server.xml 中反复建立这些上下文标记。 其次,如何将这些旧的Web项目再次恢复到工作状态?
答案 0 :(得分:14)
我遇到了类似的错误,并按照以下步骤进行了修复: 1.在Servers项目(在Eclipse中添加Apache Tomcat Server时自行创建)下,打开server.xml 2.注释掉
行<Context docBase=... />
答案 1 :(得分:9)
这将阻止在每次请求时创建多个上下文标记
1) 停止服务器
2) 清理Tomcat的工作目录
答案 2 :(得分:4)
如果您没有使用基于注释的Servlet,请从servlet的开头删除注释 @WebServlet(“/ YourServletName”)。在删除此注释后,此注释会将映射与web.xml混淆,Tomcat服务器将正常工作。
答案 3 :(得分:1)
这似乎是本地Maven存储库的问题。 (即.m2文件夹)可能是由于某些损坏的.jar文件
对我来说,以下操作有助于解决此问题。
在我的本地文件系统上,我删除了目录.m2 (Maven本地存储库)
在 Eclipse 中,更新了项目(选择 Maven>更新项目)
再次在Tomcat服务器上运行该应用程序。
答案 4 :(得分:0)
在我的情况下,jdk目录中jre / lib / ext中的servlet-api.jar文件与tomcat中的servlet-api.jar文件冲突,从而删除了jre / lib / ext中的servlet-api.jar。 jdk目录可以解决问题。
答案 5 :(得分:0)
只需确保使用正确的web.xml配置进行构建。我已使用tomcat配置更新了web.xml,并且对我有用。 样本:-
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>simulator</display-name>
<description>simulator app</description>
<!-- File upload -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!-- excel simulation -->
<display-name>simulator</display-name>
<description>simulator app</description>
<!-- File upload -->
<welcome-file-list>
<welcome-file>InsertPage.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>FileUploadServlet</servlet-name>
<servlet-class>clari5.excel.FileUploadServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>FileUploadServlet</servlet-name>
<url-pattern>/excelSimulator/FileUploadServlet</url-pattern>
</servlet-mapping>
</web-app>
答案 6 :(得分:0)
可能导致此问题的问题之一是,当您忘记将/字符放在WebServlet批注@WebServlet(“ / example”)@WebServlet(“ example”)中时 我希望它对我有用。
答案 7 :(得分:0)
如果使用以下堆栈: 服务器版本:Apache Tomcat / 9.0.21 Servlet版本:4.0 JSP版本:2.3
然后尝试将HttpServer::new(move || {
App::new()
.service(resource("/upload")
// .guard(actix_web::guard::Header("Content-Type", "multipart/form-data"))
.data(form.clone())
.route(post()
.to(upload_multipart)
)
)
})
添加到您的web.xml文件中。因此,您的文件如下所示:
<absolute-ordering />
答案 8 :(得分:0)
以下解决方案对我有用: 导航到Project-> Clean .. 清理Tomcat服务器引用的所有项目 刷新您要在Tomcat上运行的项目
尝试稍后再运行服务器
答案 9 :(得分:-1)
通过网上的各种资源,但没有一个帮助,然后我删除了现有的服务器,并再次添加相同的服务器,现在它工作正常,步骤
窗口&gt;&gt; ShowView&gt;&gt;服务器&gt;&gt; RightClick&gt;&gt;删除
然后再添加服务器,如前所述。
答案 10 :(得分:-1)
我认为这是jar文件版本问题。我有同样的问题,我通过从构建路径更改commons-codec-1.6.jar文件来修复它。早些时候我使用的是最新版本1.10。渐渐地我减少了版本和1.6版本修复了我的问题。
答案 11 :(得分:-3)
转到任务管理器,终止java进程并重新打开服务器。 应该工作正常。