【问题标题】:INFO: No Spring WebApplicationInitializer types detected on classpath on tomcat 8信息:在 tomcat 8 的类路径上未检测到 Spring WebApplicationInitializer 类型
【发布时间】:2016-03-19 18:56:21
【问题描述】:

我正在尝试在 tomcat 8 上部署一个 java web 应用程序。战争是建立在 jdk 1.8 上的。当我看到 catalina.log 时,我看到应用程序已部署并且服务器已成功启动。 但是在 localhost.log 我看到了消息 2015 年 12 月 14 日 12:10:42.774 信息 [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log 在类路径上未检测到 Spring WebApplicationInitializer 类型

此外,当我点击应用程序 URL 时,我无法启动欢迎页面。日志中没有其他错误。 如果我遗漏了什么,有人可以告诉我。

谢谢 阿皮特

【问题讨论】:

  • 您的 WAR 中至少缺少一个 Spring JAR。打开它,看看是否可以在 WEB-INF/lib 的任何 JAR 中找到该类。如果不是,则说明您遇到了包装问题。

标签: java tomcat


【解决方案1】:

我遇到了一个愚蠢的错误,我花了很长时间才解决……查看我的 pom.xml……

<?xml version="1.0" encoding="UTF-8"?>

http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

<groupId>com.outbottle</groupId>
<artifactId>PersonalDetailsMVC</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<name>PersonalDetailsMVC</name>

<properties>
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.version>4.0.1.RELEASE</spring.version>
    <jstl.version>1.2</jstl.version>
    <javax.servlet.version>3.0.1</javax.servlet.version>
</properties>

<dependencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${javax.servlet.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>${jstl.version}</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <compilerArguments>
                    <endorseddirs>${endorsed.dir}</endorseddirs>
                </compilerArguments>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${endorsed.dir}</outputDirectory>
                        <silent>true</silent>
                        <artifactItems>
                            <artifactItem>
                                <groupId>javax</groupId>
                                <artifactId>javaee-endorsed-api</artifactId>
                                <version>7.0</version>
                                <type>jar</type>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

问题是我的包名。检查后:

a) IDE(对我来说是 Netbeans)中的运行时包名称,以查看我的运行时源是否针对 POM 为 1.8kjdk

b) 仔细检查 POM (pom.xml) 以确保它具有用于注释 (3.0+) 和 Spring 依赖项的 Javax servlet 配置

c) 仔细检查我的 WebInitializer.java(实现 WebApplicationInitializer(而不是 web.xml))在语法上是正确的

d) 仔细检查我的 Config.java 文件以确保它正确地重载了​​ addResourceHandlers(ResourceHandlerRegistry 注册表) 并且 setupViewResolver() 的 bean 是正确的

e) 仔细检查我的文件夹结构以确保它正确且程序流程看起来连贯

f) 移除并重新部署 Glassfish,看看是否有任何改变

然后我发现我的问题是:

f) “com.trainer.config”是错误的!它必须是“com.outbottle”(然后 config/controllers/model/etc) 让它工作。正如你在上面看到的,我 使用 Maven(第一次)、Spring、1.8 JDK 并且几乎有一个 行程调试这个问题。全部在 Glassfish 上运行(Tomcat 没问题 也适用于上述 pom 配置)。也就是说,我对自己很满意 现在并更好地了解 Maven 和 Spring,以便我的下一步 春季学习曲线。希望这对您也有帮助!

【讨论】:

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