Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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
Jakarta ee java.lang.ClassNotFoundException:javax.servlet.jsp.el.ImplicitObjectELResolver$ImplicitObjects_Jakarta Ee_Maven_Maven 2_Tomcat7 - Fatal编程技术网

Jakarta ee java.lang.ClassNotFoundException:javax.servlet.jsp.el.ImplicitObjectELResolver$ImplicitObjects

Jakarta ee java.lang.ClassNotFoundException:javax.servlet.jsp.el.ImplicitObjectELResolver$ImplicitObjects,jakarta-ee,maven,maven-2,tomcat7,Jakarta Ee,Maven,Maven 2,Tomcat7,升级到最新版本的eclipseHelios 3.6,M2E 1.0,WTP 3.2.5 尝试运行我的maven项目,该项目在Tomcat7上使用JSF2.1.3和Spring3,我得到以下异常: java.lang.ClassNotFoundException: javax.servlet.jsp.el.ImplicitObjectELResolver$ImplicitObjects$4 at org.apache.catalina.loader.WebappClassLoader.lo

升级到最新版本的eclipseHelios 3.6M2E 1.0WTP 3.2.5 尝试运行我的maven项目,该项目在Tomcat7上使用JSF2.1.3Spring3,我得到以下异常:

java.lang.ClassNotFoundException: javax.servlet.jsp.el.ImplicitObjectELResolver$ImplicitObjects$4
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
    at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2006)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:1969)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1858)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1826)
    at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1812)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1306)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:896)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:322)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5103)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:148)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:621)
    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:450)

java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;" the class loader (instance of org/apache/catalina/loader/WebappClassLoader) of the current class, com/sun/faces/config/ConfigureListener, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature
    at com.sun.faces.config.ConfigureListener.registerELResolverAndListenerWithJsp(ConfigureListener.java:693)
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:243)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    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:662)
Dec 17, 2011 4:56:04 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener
java.lang.RuntimeException: java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;" the class loader (instance of org/apache/catalina/loader/WebappClassLoader) of the current class, com/sun/faces/config/ConfigureListener, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:292)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    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:662)
Caused by: java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;" the class loader (instance of org/apache/catalina/loader/WebappClassLoader) of the current class, com/sun/faces/config/ConfigureListener, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature
    at com.sun.faces.config.ConfigureListener.registerELResolverAndListenerWithJsp(ConfigureListener.java:693)
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:243)
    ... 8 more
以下是我对maven的配置:

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
       </dependency>


        <dependency>
         <groupId>com.sun.faces</groupId>
         <artifactId>jsf-api</artifactId>
         <version>2.1.3</version>
        </dependency>

        <dependency>
         <groupId>com.sun.faces</groupId>
         <artifactId>jsf-impl</artifactId>
         <version>2.1.3</version>
        </dependency>

        <dependency>
          <groupId>jstl</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
        </dependency>

javax.servlet
javax.servlet-api
3.0.1
假如
com.sun.faces
JSFAPI
2.1.3
com.sun.faces
jsf impl
2.1.3
jstl
jstl
1.2
我是缺少jar文件,还是使用了不兼容的jar版本

请告知,谢谢

更新:到目前为止,我得到的是通过从pom文件中删除以下依赖项,使应用程序能够正常运行:

<dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.2.1</version>
           <scope>provided</scope>
          </dependency>

          <dependency>
           <groupId>javax.el</groupId>
            <artifactId>javax.el-api</artifactId>
           <version>2.2.2</version>
           <scope>provided</scope>
          </dependency>

javax.servlet.jsp
javax.servlet.jsp-api
2.2.1
假如
javax.el
javax.el-api
2.2.2
假如
我认为它们与集装箱提供的罐子相冲突

我需要知道的是:

1-我是否必须将依赖项:
javax.servlet.jsp api
javax.el api
添加到提供的pom文件中,或者我根本不需要添加它们

2-如果我必须添加这两个依赖项,那么我应该如何正确地添加它们,以使它们不会与tomcat JAR冲突,这意味着什么版本,并且我应该将依赖项标记为已提供还是未提供


还有一个重要的问题,如果我必须添加它们,为什么我必须这样做,添加它们的重要性是什么,因为它们是由容器提供的,到目前为止我所了解的,我需要添加
javax.servlet api
依赖项,并将其标记为提供的依赖项,因为我在某些类中使用servlet

只有在代码中需要这些依赖项时,才应该添加它们,这意味着编译代码时需要它们。如果在代码中不使用JSP或EL类,则可以删除依赖项。因此,您可以通过删除依赖项来测试是否需要依赖项。如果代码仍然可以编译,则不需要它们。:)


如果您需要它们,您应该明确地将它们添加为
提供的
依赖项,因为这些类是由Tomcat在运行时提供的。只需确保依赖项的版本与Tomcat提供的版本匹配即可。那你就不会有任何问题了。提供的依赖项仅用于编译代码,但它们没有打包到生成的WAR文件中,这没问题,因为Tomcat提供了它们。

我遇到了类似的问题:我能够在一台计算机上运行项目,但在另一台计算机上,我获得了问题中描述的ClassNotFoundException

这两种环境之间的唯一区别是tomcat服务器的版本:工作计算机中为7.0.26,另一台为7.0.16。我在两台计算机上安装了相同的版本(7.0.26),解决了这个问题


我希望这个答案对某些人有用。

我不是一个专业人士,所以我不知道如何解决这个问题,但我至少可以告诉你,异常表明在最终的webapp运行时类路径中有多个EL API JAR文件(冲突类是
javax.EL
包)。如果您确定Maven的工作是正确的,那么您需要验证您是否没有在
/WEB-INF/lib
Tomcat/lib
JRE/lib
JRE/lib/ext
以及webapp运行时类路径所涵盖的任何其他路径中手动放置任何内容。Tomcat 7本身已经提供了正确的EL 2.2 API/impl,因此您不需要自己(或由Maven提供)。@BalusC您的意思是我应该删除标记为提供的EL依赖项,只包括提供的jsp API和servlet API?正如所说,我不是Maven。我不知道。您需要验证Maven构建的WAR是否正常,以及是否没有手动使用重复的EL API JAR文件将上述库路径弄乱。我还建议升级到Eclipse 3.7.1(Indigo),因为这是Eclipse的最新稳定版本。@Alexander Pogrebnyak,我甚至尝试从.m2中删除所有依赖项,并对完整的maven进行清理和安装,但仍然得到相同的错误,以及错误原因的提示?