`
a116475939
  • 浏览: 8100 次
文章分类
社区版块
存档分类
最新评论

升级JDK版本后,SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializ

 
阅读更多

今天把项目的jdk6版本升级到了7,项目启动报错

SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializ

于是开始查找资料
答案在这里:
http://stackoverflow.com/questions/21708828/org-springframework-web-springservletcontainerinitializer-cannot-be-cast-to-java

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

改为

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

即可
顺便查询了下

Dependency Scope
在POM 4中,中还引入了,它主要管理依赖的部署。目前可以使用5个值:
* compile,缺省值,适用于所有阶段,会随着项目一起发布。
* provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
* runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
* test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
* system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
依赖范围控制哪些依赖在哪些classpath 中可用,哪些依赖包含在一个应用中。让我们详细看一下每一种范围:
compile (编译范围)
compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围。编译范围依赖在所有的classpath 中可用,同时它们也会被打包。
provided (已提供范围)
provided 依赖只有在当JDK 或者一个容器已提供该依赖之后才使用。例如, 如果你开发了一个web 应用,你可能在编译 classpath 中需要可用的Servlet API 来编译一个servlet,但是你不会想要在打包好的WAR 中包含这个Servlet API;这个Servlet API JAR 由你的应用服务器或者servlet 容器提供。已提供范围的依赖在编译classpath (不是运行时)可用。它们不是传递性的,也不会被打包。
runtime (运行时范围)
runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC驱动实现。
test (测试范围)
test范围依赖 在一般的编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。
system (系统范围)
system范围依赖与provided 类似,但是你必须显式的提供一个对于本地系统中JAR 文件的路径。这么做是为了允许基于本地对象编译,而这些对象是系统类库的一部分。这样的构件应该是一直可用的,Maven 也不会在仓库中去寻找它。如果你将一个依赖范围设置成系统范围,你必须同时提供一个 systemPath 元素。注意该范围是不推荐使用的(你应该一直尽量去从公共或定制的 Maven 仓库中引用依赖)。

感谢:
http://my.oschina.net/boonya/blog/141276
http://stackoverflow.com/questions/21708828/org-springframework-web-springservletcontainerinitializer-cannot-be-cast-to-java

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    解决cannot be cast to javax.servlet.Filter 报错的问题

    当遇到“`cannot be cast to javax.servlet.Filter`”的错误时,通常意味着在程序运行过程中尝试将一个对象强制转换为`Filter`接口,但该对象实际类型并不符合预期。这种错误的出现可能是由于类路径(Classpath)中...

    编译时提示软件包javax.servlet.http不存在,如何解决

    解决 Java 编译时软件包 javax.servlet.http 不存在的问题 Java 编译时提示软件包 javax.servlet.http 不存在是 Java 开发中常见的问题。javax.servlet.http 是 Java Servlet 规范中的一个软件包,提供了 HTTP 协议...

    jar.zip解决The import javax.crypto cannot be resolved

    遇到"The import javax.crypto cannot be resolved"的错误,通常是因为JDK缺少这些扩展,通过下载并替换相应的JAR文件即可解决。正确配置和使用这些扩展,可以帮助开发者实现更安全的加密和网络通信功能。

    javax.servlet jar包

    javax.servlet jar包,当报错httpservletrequest,httpservletresponse等无法导入,提示要更换jdk时,导入此包即可,非jdk版本问题

    解决java编译错误( 程序包javax.servlet不存在javax.servlet.*)

    在Java开发过程中,遇到“程序包javax.servlet不存在javax.servlet.*”的编译错误是相对常见的问题。这个问题通常发生在尝试编译和运行使用Servlet API的Java Web应用程序时。要解决这个问题,我们需要了解Java的...

    Tomcat6.0 javax.servlet文档

    【标题】"Tomcat6.0 javax.servlet文档"所涉及的知识点主要集中在Java服务器端编程领域,特别是关于Servlet和JavaServer Pages(JSP)技术。Servlet是Java平台上的一个标准接口,它允许开发者创建能够处理HTTP请求的...

    javax.xml.rpc

    "javax.xml.rpc"是Java平台中的一个关键组件,主要用于实现基于XML的远程过程调用(XML-RPC)服务。这个框架允许Java应用程序通过HTTP协议来调用远程服务器上的方法,从而实现分布式计算。在Java EE环境中,它常与...

    javax.ws.rs-api-2.0.1-API文档-中文版.zip

    赠送jar包:javax.ws.rs-api-2.0.1.jar; 赠送原API文档:javax.ws.rs-api-2.0.1-javadoc.jar; 赠送源代码:javax.ws.rs-api-2.0.1-sources.jar; 赠送Maven依赖信息文件:javax.ws.rs-api-2.0.1.pom; 包含翻译后...

    javax.ws.rs-api-2.0-API文档-中文版.zip

    赠送jar包:javax.ws.rs-api-2.0.jar; 赠送原API文档:javax.ws.rs-api-2.0-javadoc.jar; 赠送源代码:javax.ws.rs-api-2.0-sources.jar; 赠送Maven依赖信息文件:javax.ws.rs-api-2.0.pom; 包含翻译后的API文档...

    Unable to load class ‘javax.xml.bind.JAXBException‘(csdn).pdf

    在Android Studio中遇到"Unable to load class ‘javax.xml.bind.JAXBException‘"的错误,通常是由于Java运行时环境(JRE)或开发工具包(JDK)与项目的兼容性问题导致的。`javax.xml.bind.JAXBException`是Java的...

    javax.annotation-api-1.3.2

    JDK9及以上版本没有javax.annotation-api-***.jar包 ,无法使用注解:@Resource JDK新特性,高版本JDK没有自带的javax(java扩展包)了。或者是使用的JDK不完整。 下载javax.annotation.jar包,导入到lib文件夹下,...

    javax.activation.jar

    javax.activation.jar 是一个Java平台上的库,主要用于支持数据对象的激活和处理,它是JavaMail项目的一部分,但也可以单独使用。这个库提供了数据处理和传输的标准API,使得开发者能够在不同的应用程序和环境中交换...

    javax.comm jar包

    javax.comm 是一个Java API,它提供了与串行通信硬件设备交互的能力。这个API在Java社区中广泛使用,尤其是在需要处理RS-232串口通信的场景中。由于某些原因,这个库没有被包含在标准的Java开发工具包(JDK)中,...

    HttpServletRequest和HttpServletResponse的必备包

    Java中,引入javax.servlet.http.HttpServletRequest和javax.servlet.http.HttpServletResponse包的必备jar包:org.apache.commons.httpclient.jar

    发邮件程序需要的:javax.mail包

    发邮件程序需要的:javax.mail包

    Jcreator不能引入servlet包的解决办法

    完成以上步骤后,你应该能够在JCreator中成功导入`javax.servlet.*`等Servlet相关的包了。 #### 三、其他注意事项 - **版本兼容性**:确保下载的`servlet-api.jar`版本与你的项目需求相匹配,不同的Servlet版本...

    javax.activation-1.2.0.jar

    解决Springboot项目报错:com/sun/xml/bind/jaxb-impl/2.2.11/jaxb-×××.jar%2520(没有那个文件或目录)

    javax.xml.bind.jar

    报错Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/* 由于缺少了javax.xml.bind,这个包在jdk 8以上版本被移除,需要手动导入

    ActiveMQ 中javax.jms的源码 javax.jms-sources-1.1.zip

    《深入解析ActiveMQ中的javax.jms源码》 在Java消息服务(Java Message Service,简称JMS)领域,javax.jms是核心API,它定义了应用程序与消息中间件进行交互的一组接口和类。ActiveMQ作为开源的消息中间件,广泛...

    jdk版本8u92, 8中比较高到的版本

    jdk8u92 tomcat8启动报错 tomcat启动javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String; jdk可以换成这个

Global site tag (gtag.js) - Google Analytics