Java 在本地tomcat中运行web应用程序失败,出现LinkageException

Java 在本地tomcat中运行web应用程序失败,出现LinkageException,java,jsp,tomcat,servlets,Java,Jsp,Tomcat,Servlets,将web应用部署到本地tomcat(在eclipse中)时,启动失败,出现以下错误: 严重:将上下文初始化事件发送到类com.sun.faces.config.ConfigureListener的侦听器实例时发生异常 java.lang.LinkageError:加载程序约束冲突:解析接口方法“javax.servlet.jsp.JspApplicationContext.addELResolver(Ljavax/el/ELResolver;)时 当前类的类加载器(org/apache/cata

将web应用部署到本地tomcat(在eclipse中)时,启动失败,出现以下错误:

严重:将上下文初始化事件发送到类com.sun.faces.config.ConfigureListener的侦听器实例时发生异常

java.lang.LinkageError:加载程序约束冲突:解析接口方法“javax.servlet.jsp.JspApplicationContext.addELResolver(Ljavax/el/ELResolver;)时

当前类的类加载器(org/apache/catalina/loader/WebappClassLoader实例)、com/sun/faces/config/ConfigureListener和类加载器(org/apache/catalina/loader/StandardClassLoader实例)对于已解析的类,javax/servlet/jsp/JspApplicationContext对于类型p.JspApplicationContext.addELResolver(Ljavax/el/ELResolver;)具有不同的类对象

这是怎么回事?我已经读到它可能与WEB-INF/lib中的servlet JAR有关,但这似乎不是问题所在:


那里没有“javax.*”jar,那么为什么该包中的类会失败呢?

从应用程序中删除
servlet api
。这不应该出现在webapp分发版中

Tomcat(或任何容器)必须从自己的类路径提供这些类,这样类的多个实例就不会被类加载


如果您使用的是maven,则需要提供一个
依赖项。

从应用程序中删除
servlet api
。这不应出现在webapp分发中

Tomcat(或任何容器)必须从自己的类路径提供这些类,这样类的多个实例就不会被类加载


如果您使用的是maven,则需要提供一个
依赖项。

该问题是由位引起的。请检查您正在使用的操作系统的哪个位,并为该位安装jre。因为tomcat是一个java应用程序,它没有位。这意味着它可以在64位和32位上运行

可以同时安装64位和32位版本的Java。如果Tomcat 7安装程序发现安装了32位的Java 7(仅限),则会将Tomcat 7安装到Program files(x86)目录中。但Tomcat 7安装程序会选择64位版本的Java,并将自身安装到Program files文件夹中


但在这种情况下,您不能假设Tomcat 7使用的是64位Java,因为用户可能在安装Tomcat 7后添加了64位Java,而Tomcat 7在这种情况下不知道如何将其“比特数”从32更改为64。

问题是由比特数引起的。请检查您使用的操作系统的哪个比特,并为该比特安装jre。因为tomcat是一个java应用程序,它没有比特数,这意味着它既可以在64位上运行,也可以在32位上运行

可以同时安装64位和32位版本的Java。如果Tomcat 7安装程序发现安装了32位的Java 7(仅限),则会将Tomcat 7安装到Program files(x86)目录中。但Tomcat 7安装程序会选择64位版本的Java,并将自身安装到Program files文件夹中


但是在这种情况下,您不能假设Tomcat 7使用的是64位Java,因为用户可能在安装Tomcat 7后添加了64位Java,而Tomcat 7在这种情况下不知道如何将其“比特数”从32更改为64。

在这种情况下,请检查
jar
的其余部分,并确保这些类不包括在其他任何地方。W“那些课“你指的是任何
javax.servlet
,对吗?也需要使用
elapi
。是的,tomcat的
lib
目录中的任何内容都不应该镜像到应用程序中,除非您打算对其进行阴影处理。在这种情况下,请检查
jar
s的其余部分,并确保这些类不包括在其他任何地方。对于“这些类”,您指的是任何
javax.servlet
,对吗?也需要转到
el api
。是的,tomcat的
lib
目录中的任何内容都不应该镜像到您的应用程序中,除非您打算对其进行阴影处理。