Spring Boot Error:java.lang.NoClassDefFoundError:org / springframework / util / Assert

时间:2018-03-18 10:21:27

标签: java spring maven spring-mvc spring-boot

我是Spring Boot的新手,并开始使用一些视频教程。我创建了一个Maven项目,添加了工件ID spring-boot-starter-parent的父依赖项,添加了spring-boot-starter-webspring-boot-starter-test的依赖项。这是Application.java

@RestController
@EnableAutoConfiguration
public class Application {

    @RequestMapping("/")
    public String home() {
        return "Hello World";
    }

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

}

注意:

src/test/javasrc/test/resources个包是空的。这是一个Maven项目,我正在使用STS,执行“Maven - > Update Project ...”并使用STS IDE多次清理/构建整个项目,我收到以下错误。此外,我试图在STS中创建一个新项目,但我仍然收到以下错误:

当我将其作为Spring Boot App运行时,我收到此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/util/Assert
    at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:263)
    at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:247)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1246)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1234)
    at com.boot.Application.main(Application.java:18)
Caused by: java.lang.ClassNotFoundException: org.springframework.util.Assert
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 5 more

请帮我解决这个问题。

修改

这是我的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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.deloitte.boot</groupId>
  <artifactId>boot-test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>boot-test</name>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
  </parent>
  <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
  </dependencies>
</project>

这是我的项目目录stricture:

enter image description here

4 个答案:

答案 0 :(得分:2)

我已经解决了这个问题,首先我删除了文件夹.m2,然后将mvn clean install运行到目录spring boot项目中。仅此而已!

答案 1 :(得分:1)

在学习和制作项目时,最好遵循软件原则。尝试以一种始终实现关注分离的方式创建项目,这将使您的代码不仅易于理解,而且还可以进行调试和修复。

像这样更改您的应用程序类:

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

@SpringBootApplication
public class Application {

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

现在制作另一个包控制器并在其中创建用于测试的课程

@RestController
//You can add this if you want or remove this class level mapping
@RequestMapping("/testApp")
public class TestController {

    @RequestMapping("/")
    public String home() {
        return "Hello World";
    }
}

寻求进一步的帮助。请在STS中查看this (official spring.io tutorial) Spring Boot App的简单示例。 还有一个是very simple and straightforward来启动和运行Spring Boot App。

编辑:请在pom.xml中添加初学者测试。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <version>1.5.10.RELEASE</version>
    <scope>test</scope>
</dependency>

答案 2 :(得分:0)

在我安装了STS之后,出现了同样的问题(在此之前,Eclipse中的一切都正常了)。 我删除了.m2文件夹中的springframework文件夹,然后在我的项目目录中运行“ mvn clean install”。之后,我的assertj-core-3.11.1.jar和mockito-core-2.23.0.jar(ZipFile无效的LOC标头(错误的签名))遇到了问题,因此我也将其删除并运行了“ mvn spring-boot :run“。

现在它可以工作了(但是我不能真正解释为什么)。

答案 3 :(得分:0)

IntelliJ和从Spring Initializer创建的全新项目也遇到了同样的问题。尝试手动编译时看到此消息:

[ERROR] error reading /Users/mike/.m2/repository/org/springframework/spring-core/5.1.4.RELEASE/spring-core-5.1.4.RELEASE.jar; zip file is empty

结果证明从Maven Central下载的文件已损坏:

ls -al /Users/mike/.m2/repository/org/springframework/spring-core/5.1.4.RELEASE/spring-core-5.1.4.RELEASE.jar
-rw-r--r--  1 mike  staff  0 Jan 16 20:55 
/Users/mike/.m2/repository/org/springframework/spring-core/5.1.4.RELEASE/spring-core-5.1.4.RELEASE.jar

删除整个目录并重建,迫使其下载缺少的库的新副本:

./mvnw compile
Downloading from central: https://repo.maven.apache.org/maven2/org/springframework/spring-core/5.1.4.RELEASE/spring-core-5.1.4.RELEASE.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/springframework/spring-core/5.1.4.RELEASE/spring-core-5.1.4.RELEASE.pom (3.6 kB at 7.6 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/springframework/spring-core/5.1.4.RELEASE/spring-core-5.1.4.RELEASE.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/springframework/spring-core/5.1.4.RELEASE/spring-core-5.1.4.RELEASE.jar (1.3 MB at 3.6 MB/s)