【问题标题】:INFO: No Spring WebApplicationInitializer types detected on classpath信息:在类路径上未检测到 Spring WebApplicationInitializer 类型
【发布时间】:2014-05-21 05:55:22
【问题描述】:

当我从 Eclipse 部署时,我有一个在我的 tomcat7 服务器上运行良好的 spring 项目:运行方式 >> 在服务器上运行。 在 Eclipse 选项卡“服务器”中,我看到:

Servers
 Tomcat v7.0 Server at localhost [Started, Synchronized]
   my_project [Synchronized]
     spring-web-3.2.4-RELEASE.jar

我的项目:

  • 不使用web.xml,我使用javaconf@注解。
  • 不使用maven,我使用用户库

我看到项目在:

/srv/applications/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0

而且,我还看到了以下文件夹:conf、logs、temp、webapps、work、wtpwebapps

当我从 Eclipse 部署时,我确认我的 tomcat7 服务器上一切正常!

在 Eclipse 控制台中我得到:

Apr 08, 2014 3:26:59 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:my_project' did not find a matching property.
Apr 08, 2014 3:27:00 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8888"]
Apr 08, 2014 3:27:00 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8843"]
Apr 08, 2014 3:27:01 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 3215 ms
Apr 08, 2014 3:27:01 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Apr 08, 2014 3:27:01 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.26
Apr 08, 2014 3:27:11 PM org.apache.catalina.core.ApplicationContext log
INFO: Spring WebApplicationInitializers detected on classpath: [my_project.web.context.WebApplicationInitializer@3599e94c]
Apr 08, 2014 3:27:12 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Apr 08, 2014 3:27:24 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'dispatcher'
Apr 08, 2014 3:27:24 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8888"]
Apr 08, 2014 3:27:24 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8843"]
Apr 08, 2014 3:27:24 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 23821 ms

现在:问题 当我在同一个 tomcat7 服务器 /var/lib/tomcat7/webapps 中部署同一个应用程序(使用文件 .war)时

我可以在没有数据的情况下打开我的初始网页网页,

我在日志中看到:

INFO: No Spring WebApplicationInitializer types detected on classpath

当我重新启动 tomcat7 时,我进入了日志文件:

INFO: Destroying ProtocolHandler ["http-bio-8843"]
Apr 8, 2014 3:25:30 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:my_project' did not find a matching property.
Apr 8, 2014 3:25:30 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8888"]
Apr 8, 2014 3:25:31 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8843"]
Apr 8, 2014 3:25:31 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1664 ms
Apr 8, 2014 3:25:31 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Apr 8, 2014 3:25:31 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.26
Apr 8, 2014 3:25:38 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8888"]
Apr 8, 2014 3:25:38 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8843"]
Apr 8, 2014 3:25:38 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 7576 ms

【问题讨论】:

  • 如何启动/停止独立的 tomcat 实例?清除日志并重新启动。我d like to see the No Spring WebApp...`.
  • 我使用sudo service tomcat7 restart,我看到日志文件在:/var/lib/tomcat7/logs
  • 2014 年 4 月 8 日下午 3:25:38 org.apache.catalina.core.ApplicationContext 日志信息:在类路径上未检测到 Spring WebApplicationInitializer 类型
  • 编辑您的问题并添加完整的日志。还要指定您的应用的名称。

标签: java spring spring-mvc tomcat7


【解决方案1】:

我在 java7 应用程序中嵌入 Tomcat 8 时遇到了类似的问题。

当我在我的应用程序中启动 Tomcat 时,它工作正常。但是当我通过 Maven 启动它以进行集成测试时,我收到了这个错误:“在类路径上没有检测到 Spring WebApplicationInitializer 类型”。

我通过将 org.apache.tomcat.embed:tomcat-embed-* 依赖项从版本 8.0.29 升级到 8.0.47 来修复它。

【讨论】:

    【解决方案2】:
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>          
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
     </plugin>
    

    这是应该在 pom.xml 中的重要插件。我花了两天时间调试和研究。这就是解决方案。这是告诉 maven 使用给定编译器的 Apache 插件。

    【讨论】:

    • OP 明确表示“不使用 maven”。我们中的一些人需要保证可重复的构建,这只有在您不依赖任何其他人的系统(例如 Maven 存储库)上的任何东西时才有可能。
    【解决方案3】:

    我愚蠢的原因是:自动构建被禁用了!

    【讨论】:

    • 你救了我的命。我调试了至少5个小时,原因是Build Automatically被禁用了..呵呵..谢谢兄弟。
    • 嘿嘿嘿我们一个人:)
    • 如何开启?
    • 这是 Eclipse 特有的。在 Eclipse 中,我们将打开project 菜单并确保启用Build automatically
    【解决方案4】:

    对于 Eclipse 用户: 解决方案很简单,只需更改项目的性质 Spring Tools->添加 spring 项目性质

    完成。

    【讨论】:

      【解决方案5】:

      确保您的 log4j 配置正确,可能会引发异常,但您只看到一半。

      请看https://stackoverflow.com/a/16817018/1249304

      【讨论】:

        【解决方案6】:

        在 WebLogic 服务器中使用 Spring 集成 bean 部署 WAR 时,我收到此信息消息“在类路径上未检测到 Spring WebApplicationInitializer 类型”。 实际上,我可以观察到 servlet URL 返回 404 Not Found 并且除了服务器日志中带有否定语气“No Spring ...etc”的信息消息之外,我的 spring 配置中似乎没有其他错误;没有构建或部署错误,没有投诉。 事实上,我怀疑 beans.xml(spring 上下文 XML)实际上根本没有被选中,这与 Oracle 的 jDeveloper 中非常具体的人工制品组织有关。解决方案是在项目属性的“部署”主题下编辑部署配置文件时,谨慎使用 WEB-INF/类类别的“贡献者”和“过滤器”。

        确切地说,我建议您通过 jDeveloper 默认“beans.xml”命名您的 spring 上下文,并将其并排放置到 WEB-INF 子目录本身(在您的 web 应用程序源路径下,例如 <...your>/public_html/)。然后在 WEB-INF/classes 类别中(编辑部署配置文件时)您可以检查“贡献者”列表中的 Project HTML 根目录,然后在过滤器中选择 beans.xml,然后确保您的 web.xml 具有上下文参数值,例如 classpath:beans.xml。

        一旦这个问题得到修复,我就可以继续进行,在进行了更多的 bean 配置更改和实现之后,消息“没有在类路径上检测到 Spring WebApplicationInitializer 类型”回来了!实际上,我没有注意到它究竟是什么时候以及为什么回来的。这第二次,我添加了一个

        public class HttpGatewayInit implements WebApplicationInitializer { ... }
        

        它实现了空的继承方法,整个应用程序运行良好!

        ...如果您觉得 Java EE 开发对于由级联变量初始化程序解释的级联 XML 配置文件(一些手动编辑,其他通过向导编辑)变得有点过于疯狂,请允许我坚持我完全分享您的点。

        【讨论】:

          【解决方案7】:

          我也遇到了同样的问题。我的 maven 有 tomcat7 插件,但 JRE 环境是 1.6。我把我的tomcat7换成tomcat6,错误就消失了。

          【讨论】:

            【解决方案8】:

            我发现了错误: 我有一个使用 jdk 1.6 构建的库。 Spring 主控制器和组件都在这个库中。以及我如何使用jdk 1.7,它没有找到1.6中内置的类。

            该解决方案全部使用“编译器合规级别:1.7”和“生成的 .class 文件兼容性:1.6”、“源代码兼容性:1.6”构建。

            我在 Eclipse 中设置了这个选项: 首选项\Java\编译器。

            谢谢大家。

            【讨论】:

              【解决方案9】:

              这是常见错误,请确保您的 file.war 已正确构建。只需打开 .war 文件并检查您的 WebApplicationInitializer 是否存在。

              【讨论】:

                猜你喜欢
                • 2017-06-02
                • 2016-03-19
                • 2013-04-25
                • 2016-06-19
                • 2018-11-30
                • 2014-08-28
                • 2019-09-06
                • 1970-01-01
                • 2021-08-31
                相关资源
                最近更新 更多