如何解决“无法实例化 WebApplicationInitializer 类”

2023-12-05

我有一个 CRUD spring 应用程序,由于依赖关系而无法运行。我需要包装上带有“战争”的部分,但无法到达。

我的 pom.xml 是:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.sprhib</groupId>
    <artifactId>entuzona</artifactId>
    <packaging>war</packaging>
    <version>0.0.2.RELEASE</version>

    <properties>
        <hibernate.version>4.2.0.Final</hibernate.version>
        <mysql.connector.version>5.1.21</mysql.connector.version>
        <spring.version>4.0.9.RELEASE</spring.version>
        <spring.security.version>3.2.5.RELEASE</spring.security.version>
    </properties>

    <dependencies>

        <!-- Other -->

        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.1.0.Final</version>



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

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

        <dependency>
            <groupId>javax.el</groupId>
            <artifactId>javax.el-api</artifactId>
            <version>2.2.4</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.web</groupId>
            <artifactId>javax.el</artifactId>
            <version>2.2.4</version>
        </dependency>
        <!-- For accept headers -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.4.1.1</version>
        </dependency>

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


        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.3.2</version>
        </dependency>



        <!-- Spring Security -->
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>${spring.security.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>${spring.security.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security.oauth</groupId>
            <artifactId>spring-security-oauth2</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.10</version>
        </dependency>
        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
        </dependency>


        <!-- DB related dependencies -->

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${hibernate.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>${hibernate.version}</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.connector.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.12.1.GA</version>
        </dependency>

        <!-- SPRING -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
            <optional>true</optional>
        </dependency>
        <!-- CGLIB is required to process @Configuration classes -->
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>2.2.2</version>
        </dependency>
        <!-- Servlet API and JSTL -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

    </dependencies>

    <repositories>
        <repository>
            <id>spring-maven-milestone</id>
            <name>Spring Maven Milestone Repository</name>
            <url>http://maven.springframework.org/milestone</url>
        </repository>
    </repositories>

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

启动tomcat时日志中的问题是:

INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
oct 19, 2015 2:25:36 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error during ServletContainerInitializer processing
javax.servlet.ServletException: Failed to instantiate WebApplicationInitializer class
    at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:160)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5170)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
    ...
Caused by: java.lang.ClassNotFoundException: org.springframework.core.env.EnvironmentCapable
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
    ... 27 more

WebAppConfig.java:

package com.sprhib.init;

import java.util.Properties;

import javax.annotation.Resource;
import javax.sql.DataSource;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.JstlView;
import org.springframework.web.servlet.view.UrlBasedViewResolver;


@Configuration
@EnableWebMvc
@ComponentScan("com.sprhib")
@EnableTransactionManagement
@PropertySource("classpath:application.properties")
public class WebAppConfig {

    private static final String PROPERTY_NAME_DATABASE_DRIVER = "db.driver";
    private static final String PROPERTY_NAME_DATABASE_PASSWORD = "db.password";
    private static final String PROPERTY_NAME_DATABASE_URL = "db.url";
    private static final String PROPERTY_NAME_DATABASE_USERNAME = "db.username";

    private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "hibernate.dialect";
    private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "hibernate.show_sql";
    private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN = "entitymanager.packages.to.scan";

    @Resource
    private Environment env;

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();

        dataSource.setDriverClassName(env.getRequiredProperty(PROPERTY_NAME_DATABASE_DRIVER));
        dataSource.setUrl(env.getRequiredProperty(PROPERTY_NAME_DATABASE_URL));
        dataSource.setUsername(env.getRequiredProperty(PROPERTY_NAME_DATABASE_USERNAME));
        dataSource.setPassword(env.getRequiredProperty(PROPERTY_NAME_DATABASE_PASSWORD));

        return dataSource;
    }

    @Bean
    public LocalSessionFactoryBean sessionFactory() {
        LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource());
        sessionFactoryBean.setPackagesToScan(env.getRequiredProperty(PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN));
        sessionFactoryBean.setHibernateProperties(hibProperties());
        return sessionFactoryBean;
    }

    private Properties hibProperties() {
        Properties properties = new Properties();
        properties.put(PROPERTY_NAME_HIBERNATE_DIALECT, env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_DIALECT));
        properties.put(PROPERTY_NAME_HIBERNATE_SHOW_SQL, env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_SHOW_SQL));
        return properties;  
    }

    @Bean
    public HibernateTransactionManager transactionManager() {
        HibernateTransactionManager transactionManager = new HibernateTransactionManager();
        transactionManager.setSessionFactory(sessionFactory().getObject());
        return transactionManager;
    }

    @Bean
    public UrlBasedViewResolver setupViewResolver() {
        UrlBasedViewResolver resolver = new UrlBasedViewResolver();
        resolver.setPrefix("/WEB-INF/pages/");
        resolver.setSuffix(".jsp");
        resolver.setViewClass(JstlView.class);
        return resolver;
    }

}

有任何想法吗?


在 pom.xml 中,您将 spring-core 设置为可选,这可能会导致 spring-core 从 war 文件中排除。 要么从 spring-core 依赖项中删除可选选项,要么将此 jar 复制到 tomcat/lib 文件夹下,以便应用程序可以使用它。 这是可选依赖项的 Maven 链接:

Maven 可选依赖项

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解决“无法实例化 WebApplicationInitializer 类” 的相关文章

随机推荐

  • 同时移动2个表格

    我在这里有点卡住了 我试图同时移动 2 个表单 而不使用 OnMove LocationChanged Docking 等 与它们的位置交互的唯一方法是重写 WndProc 可能有帮助的是 表单 A 是表单 B 的所有者 因此 每当移动 A
  • 如何终止 PHP 会话?

    我正在编写一个社交网站 并且正在尝试找出 PHP 会话 在登录页面的顶部 我调用session destroy 在新用户正式注册为用户的页面和用户主页 我调用session start 当用户注销时 他们会链接到具有 session des
  • Reporting Services 将多个工作表导出到 Excel

    我目前正在构建一个 MS Reporting Services 报告 该报告可呈现为 Excel 我试图弄清楚如何设置报告 以便它在报告上创建数据的多个工作表 选项卡 据我所知 在报告中输入分页符会为您提供一个新的工作表 但是 有没有办法命
  • Javascript Array.prototype.filter() 不起作用

    我在客户端上运行这段代码来过滤事件列表 if res eventList filter function event const out res find function visibility return visibility ID e
  • 固件错误:Access-Control-Allow-Origin

    我正在调用 contextBroker 它给了我这个错误 Response to preflight request doesn t pass access control check No Access Control Allow Ori
  • 如何仅在Python中设置模块的日志记录级别?

    我在用logging info输出有关我的脚本正在执行的操作和我正在使用的信息logging basicConfig level logging INFO 启用此功能 和这个 logging basicConfig level loggin
  • 修改Python脚本批量转换目录下所有“WOFF”文件

    我一直在使用 GitHub 用户 hanikesn 见下文 编写的一个很棒的开源 python 脚本 该脚本通过命令行 Mac OS X 上的终端 将单个 WOFF 文件转换回 OTF 格式 现在 我将脚本拖放到终端 然后将 WOFF 文件
  • onActivityResult 中的 requestCode 错误

    我正在从我的片段开始一个新的活动 startActivityForResult intent 1 并希望在 Fragment 的父 Activity 中处理结果 Override protected void onActivityResul
  • 无法使用seaborn绘制双轴

    当我尝试在 jupyter 笔记本中使用 seaborn 绘制双轴图时遇到问题重要提示 该代码在 Python 2 上运行得很好 使用 anaconda 升级到 Python 3 后 我收到以下错误消息 Users enyi opt ana
  • 使用 GROUP 或 RANK 中的 WHERE 的 SQL 语句

    我有一份销售快照 内容大约是35 000 行 我们将这些列称为 Sales Rep Account ID Total Contract Value Date 我需要将所有内容分组Sales Rep然后从那里选择Sales Rep s 排名前
  • Underscore.js _.tap() 函数什么是方法链?

    Underscore js 文档解释说 tap 函数 点击 到方法链中 http underscorejs org tap 我很难遵循他们的例子 chain 1 2 3 200 filter function num return num
  • 如何在客户端导入socket.io - SOCKET.IO + NODE.JS

    我一直在尝试创建一个在线游戏 但是当我尝试使用socket on or socket emit 它会出现一个错误 如下所示socket 我看过一些与此类似的帖子 并尝试了所有解决方案 但没有一个有效 我已经得到了io connect 工作并
  • 导航栏和导航按钮中的单独标题

    嘿嘿 我有一叠UIViewControllers 位于 a 的内部UINavigationController 通常标题 或导航项的标题 决定导航栏中显示的标题 显示在顶部 and所有导航按钮 例如导航栏本身的后退按钮 现在 我计划在导航栏
  • 如何从 iOS 中的 UIMenuController 中删除默认的 UIMenuItem?

    我想从 UIMenuController 中删除一些默认的 UIMenuItem 对象 例如 剪切 复制 等 怎么做 Thanks 对显示菜单的视图进行子类化 例如UIWebView UITextView 并覆盖 canPerformAct
  • 用户设置 - 安卓

    如何使应用程序中的更改持续存在 以便当应用程序重新启动时所有设置保持不变 例如 如果从应用程序中我选择了振动 那么当应用程序未运行时 如果我的手机处于铃声模式 当应用程序重新启动时 它将自身设置为振动 实际上有多种方法可以持久保存更改 这安
  • 使用 jquery 可拖动和可点击的输入元素

    我在可拖动的 div 中有一个输入元素 我的代码应该做以下事情 当我拖动输入元素时 应该拖动整个可拖动 div 已完成 当我单击输入元素时 我应该能够编辑文本 无法完成 那么 有人可以告诉我如何单击和编辑可拖动的输入元素的文本吗 这是我的完
  • WCF 传输安全弱点

    Lowy 撰写的 Programming WCF Services 第二版 第 10 章 第 512 页 Lowy谈到传输安全时说 它的主要缺点是它只能保证点对点的传输安全 这意味着当客户端直接连接到服务时 客户端和服务之间存在多个中介会使
  • Sikulix/Jython UAC 自动化

    我想知道是否有人有幸在安装程序自动化期间通过 UAC 弹出窗口实现自动化 我有一个现有的自动安装程序代码 但由于 Sikuli 在此步骤中未使用键盘 鼠标 它在 UAC 区域失败 有人在这里有运气吗 或者在 Jython 中没有办法做到这一
  • WPF DataGrid HeaderTemplate 神秘填充

    我将一个带有图像的按钮放置在 DataGrid 列的标题中 单元格模板也只是一个带有图像的简单按钮
  • 如何解决“无法实例化 WebApplicationInitializer 类”

    我有一个 CRUD spring 应用程序 由于依赖关系而无法运行 我需要包装上带有 战争 的部分 但无法到达 我的 pom xml 是