当前位置: 首页 > 面试题库 >

java.lang.NoClassDefFoundError:org / springframework / core / env / ConfigurableEnvironment

储国发
2023-03-14
问题内容

我正在尝试使用Spring Boot编写一个简单的RESTful服务。但是,有一条错误消息我无法解决。我一直在研究,看来这是SpringBoot版本之间的冲突,但是我不确定如何摆脱它。

我有这个SpringBootApp:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * REST Service application
 */
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

与此pom.xml相关联:

<?xml version="1.0"?>
<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.websystique.springmvc</groupId>
    <artifactId>Spring4MVCHelloWorldRestServiceDemo</artifactId>
    <packaging>war</packaging>
    <version>1.0.0</version>
    <name>Spring4MVCHelloWorldRestServiceDemo Maven Webapp</name>

    <properties>
        <springframework.version>4.3.0.RELEASE</springframework.version>
        <jackson.library>2.7.5</jackson.library>
        <spring.batch.version>2.1.9.RELEASE</spring.batch.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.4.0.RELEASE</version>
        </dependency>

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

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version> <!-- Or whatever JUnit you're using. -->
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.library}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
            <version>${jackson.library}</version>
        </dependency>

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


    </dependencies>


    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.2</version>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.4</version>
                    <configuration>
                        <warSourceDirectory>src/main/webapp</warSourceDirectory>
                        <warName>Spring4MVCHelloWorldRestServiceDemo</warName>
                        <failOnMissingWebXml>false</failOnMissingWebXml>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

        <finalName>Spring4MVCHelloWorldRestServiceDemo</finalName>
    </build>
</project>

对我来说看起来不错,但出现此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/core/env/ConfigurableEnvironment
    at com.application.Application.main(Application.java:13)
Caused by: java.lang.ClassNotFoundException: org.springframework.core.env.ConfigurableEnvironment
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

问题答案:
  1. 转到Spring boot Initialzr站点,然后选择Web stack作为依赖项。
  2. 由于Spring Boot使用Opinionised依赖项和BOM表的概念,它将自动提取其他依赖项并解决classNotFoundException问题。在你的情况下,它会错过Spring-core-4.2.4.RELEASE.jar依赖项。
  3. 以全新安装spring-boot:run -e的身份执行Maven目标,你可以在IDE中找到你的maven依赖项,下面给出了一个示例POM文件。
  <?xml version="1.0" encoding="UTF-8"?>
 <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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

   <groupId>com.example</groupId>
  <artifactId>demo</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>war</packaging>

     <name>demo</name>
    <description>Demo project for Spring Boot</description>

     <parent>
       <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
     <version>1.4.0.RELEASE</version>
     <relativePath/> <!-- lookup parent from repository -->
   </parent>

    <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
       <project.reporting.outputEncoding>UTF-       8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    </properties>

 <dependencies>
     <dependency>
       <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
     </dependency>

     <dependency>
          <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
             <scope>provided</scope>
      </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency>
     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
      < /dependency>
    </dependencies>

  <build>
    <finalName>demo</finalName>
       <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
    </build>


 类似资料:
  • 问题内容: 我正在使用spring进行一些测试,但出现此错误: 我安装的JAR是:spring-test-2.5.6.jar 除此之外,我还需要另一个罐子吗? 谢谢 问题答案: 您还需要通过查看包装,通常可以告诉您缺少了哪些罐子。在此org.springframework.core。*都在核心jar文件中。

  • 问题内容: 我正在尝试使用Spring Boot编写一个简单的RESTful服务。但是,有一条错误消息我无法解决。我一直在研究, 看来这是SpringBoot版本之间的冲突,但是我不确定如何摆脱它。 我有这个SpringBootApp: Associated with this pom.xml: Looks fine for me, but I am getting this error: 问题答

  • 我正在创建一个简单的Web应用程序,并决定使用Spring JdbcTemplate类。但是现在我遇到了noClassDefFounderror:org/springframework/jdbc/core/rowmapper。 ControllerServlet.java ProductDaoImpl.java

  • 我正在学习使用apache wicket进行开发,并且尝试将Spring集成在一起

  • 问题内容: 我正在使用Eclipse IDE,并且正在编写servlet。Servlet应该接受html文件中的值,并相应地返回JSON响应。 我的doPost()是: 当我在Eclipse中运行此servlet时,会出现一个文件下载对话框。 当使用Tomcat在Eclipse外部运行时,出现错误: 行Server1.doPost(Server1.java:25)指的是 我已经将org.json.

  • 问题内容: 我有一个名为XMLtoXML.java的类,这是它的方法之一… 代码块的最后一行使用dom4j Document.i在我的类路径中有dom4j-full.jar。 如果我以独立形式运行此类(在eclipse中以Java应用程序运行),那么它将正常工作。当我将该类作为Web应用程序的一部分和dom4j-full.jar添加到我的类路径中时。 我得到以下例外。 我也确信dom4j jar存