java.lang.NoClassDefFoundError:org / springframework / core / env / ConfigurableEnvironment [英] java.lang.NoClassDefFoundError: org/springframework/core/env/ConfigurableEnvironment

查看:197
本文介绍了java.lang.NoClassDefFoundError:org / springframework / core / env / ConfigurableEnvironment的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



我有这个SpringBootApp:

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

/ **
* REST服务应用程序
* /
@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.0xmlns: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>

<依赖关系>

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

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

<依赖关系>
< groupId> junit< / groupId>
< artifactId> junit< / artifactId>
< version> 4.11< / version> <! - 或者你正在使用的任何JUnit。 - >
< / dependency>

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

<依赖关系>
< groupId> org.springframework.batch< / groupId>
< artifactId> spring-batch-core< / artifactId>
< version> $ {spring.batch.version}< / version>
<排除>
< exclude>
< groupId> org.springframework< / groupId>
< artifactId> spring-beans< / artifactId>
< / exclusion>
< exclude>
< 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>

对我来说看起来不错,但是我收到这个错误:

 线程main中的异常java.lang.NoClassDefFoundError:org / springframework / core / env / ConfigurableEnvironment 
在com.application.Application.main(应用程序.java:13)
导致:java.lang.ClassNotFoundException:org.springframework.core.env.ConfigurableEnvironment
在java.net.URLClassLoader.findClass(URLClassLoader.java:381)
在java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:331)
在java.lang.ClassLoader.loadClass(ClassLoader .java:357)
... 1更多


解决方案

推荐方法


  1. 转到。

  2. 由于Spring Boot使用意见依赖关系和物料清单的概念,它将自动提取其他依赖关系并解决您的ClassNotFoundException问题。在你的情况下,它错过了Spring-core-4.2.4.RELEASE.jar依赖关系。

  3. 执行Maven目标为 clean install spring-boot:run -e ,您可以在IDE中找到您的maven依赖项,下面给出的是一个示例POM文件。

      ;?xml version =1.0encoding =UTF-8?> 
    < project xmlns =http://maven.apache.org/POM/4.0.0xmlns: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> Spring Boot的演示项目< / description>

    < parent>
    < groupId> org.springframework.boot< / groupId>
    < artifactId> spring-boot-starter-parent< / artifactId>
    < version> 1.4.0.RELEASE< / version>
    < relativePath /> <! - 从存储库查找父项 - >
    < / 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>

    <依赖关系>
    <依赖关系>
    < groupId> org.springframework.boot< / groupId>
    < artifactId> spring-boot-starter-web< / artifactId>
    < / dependency>

    <依赖关系>
    < groupId> org.springframework.boot< / groupId>
    < artifactId> spring-boot-starter-tomcat< / artifactId>
    < scope>已提供< / scope>
    < / dependency>
    <依赖关系>
    < groupId> org.springframework.boot< / groupId>
    < artifactId> spring-boot-starter-actuator< / artifactId>
    < / dependency>
    <依赖关系>
    < groupId> org.springframework.boot< / groupId>
    < artifactId> spring-boot-starter-test< / artifactId>
    < scope> test< / scope>
    < /依赖性>
    < / dependencies>

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



I am trying to write a simple RESTful service using Spring Boot. However, there is an error message I am not able to solve. I have been researching and it looks like it is a conflict between SpringBoot versions, however I am not sure about how can I get rid of it.

I have this 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);
    }
}

Associated with this 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>

Looks fine for me, but I am getting this error:

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

解决方案

Recommended Approach

  1. Go to .
  2. As Spring Boot uses the concept of Opinionated dependencies and Bill of Materials, It will automatically pull the other dependencies and resolve your classNotFoundException issue. And in your case it misses out the Spring-core-4.2.4.RELEASE.jar dependency.
  3. Execute the Maven Goal as clean install spring-boot:run -e and you can find your maven dependencies in your IDE and below given is a sample POM file.

      <?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>
    

这篇关于java.lang.NoClassDefFoundError:org / springframework / core / env / ConfigurableEnvironment的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆