Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Servlets java.lang.NoSuchMethodError:javax.servlet.ServletContext.getServletRegistrations()Ljava/util/Map;_Servlets_Jsf 2 - Fatal编程技术网

Servlets java.lang.NoSuchMethodError:javax.servlet.ServletContext.getServletRegistrations()Ljava/util/Map;

Servlets java.lang.NoSuchMethodError:javax.servlet.ServletContext.getServletRegistrations()Ljava/util/Map;,servlets,jsf-2,Servlets,Jsf 2,我按照巴卢斯回答中的步骤做了。唯一不同的一步是答案中的Tomahawk上传链接。链接断了,所以我从另一个地方得到了战斧-1.1.11。当我尝试从Eclipse启动Tomcat 7.0.14时,出现以下错误: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getServletRegistrations()Ljava/util/Map; 而Tomcat不会启动。有什么想法吗?此外,链接中的答案来自三月。JSF2中的文件上传有什

我按照巴卢斯回答中的步骤做了。唯一不同的一步是答案中的Tomahawk上传链接。链接断了,所以我从另一个地方得到了战斧-1.1.11。当我尝试从Eclipse启动Tomcat 7.0.14时,出现以下错误:

java.lang.NoSuchMethodError: 
javax.servlet.ServletContext.getServletRegistrations()Ljava/util/Map;

而Tomcat不会启动。有什么想法吗?此外,链接中的答案来自三月。JSF2中的文件上传有什么进展吗

WEB项目的
/WEB-INF/lib
中充斥着不同品牌/版本的容器的特定于servletcontainer的库,例如
ServletAPI.jar
javaee.jar
,等等。摆脱它们吧

在Servlet 3.0中引入,此错误表示您的
/WEB-INF/lib
中有Servlet 2.5容器或更早版本的库。如果您包含它们是为了避免Eclipse在
javax.servlet.*
imports上的编译错误,那么您应该以不同的方式解决它。也就是说,通过在Eclipse中将实际要使用的servletcontainer(在您的例子中是Tomcat7)集成为目标运行时,并将项目与之关联

请注意,这个问题与JSF2.0无关。您得到了一个异常,它指向
javax.servlet
包的方法,而不是
javax.faces

另见:

还有一条信息:当我在web.xml文件中返回到版本2.5,以便我可以处理项目的其他领域时,我得到以下错误:java.lang.NoClassDefFoundError:Lorg/apache/myfaces/custom/fileupload/UploadedFile;当我将上传文件(来自链接中的教程)从项目中取出时,错误就会消失。很明显我这里少了一个或多个罐子,但我不知道是哪一个。任何帮助都将不胜感激。好的,谢谢。我在Tomcat的库中有一个以前的servlet-api.jar。我删除了它,现在我得到了:java.lang.ClassCastException:org.apache.myfaces.renderkit.html.ext.HtmlButtonRenderer无法强制转换为javax.faces.render.Renderer。我想这意味着我的脸错了吧?我使用的是myfaces-api-2.1.3.jar和myfaces-impl-2.1.3.jar。我应该用另一个吗?再次感谢,这是战斧的一部分。这反过来表明不同版本的JSF库污染了类路径。现在还不清楚您在类路径中放置了哪些JAR,但您永远不应该更改
JRE/lib
JRE/lib/ext
Tomcat/lib
(除非您知道自己在做什么)。所有特定于您的webapp的jar(上述libs尚未提供)都需要放入
/WEB-INF/lib
(并且您不应该拥有上述libs在
/WEB-INF/lib
中已经提供的库的副本)。好的,我从Tomcat库中删除了myfaces和tomahawk jar。类路径中现在只有myfaces jar:myfaces-impl-2.1.3.jar、myfaces-api-2.1.3和tomahawk-1.1.0.jar。当我启动Tomcat时,我得到以下信息:java.lang.NoClassDefFoundError:Lorg/apache/myfaces/custom/fileupload/UploadedFile,您提供的上传Bean使用它。看起来越来越近了:)所以。。。我在eclipse中清理了构建路径,并启动了Tomcat。现在我点击upload.xhtml页面,但是输入标签没有显示。我看到的是Submit按钮和以下内容:“警告:page/pages/upload.xhtml声明名称空间并使用标记t:inputFileUpload,但没有与名称空间关联的标记库。”如有任何帮助,将不胜感激。您需要安装Tomahawk。将Tomahawk JAR文件放入
/WEB-INF/lib
中。如果Eclipse项目设置正确,则绝对不需要进一步配置。