Exception in thread “main“ java.lang.NoClassDefFoundError: cn/hutool/core/util/StrUtil

在java项目中运行main方法

提示:Exception in thread "main" java.lang.NoClassDefFoundError: cn/hutool/core/util/StrUtil

Connected to the target VM, address: '127.0.0.1:56133', transport: 'socket'
Exception in thread "main" java.lang.NoClassDefFoundError: cn/hutool/core/util/StrUtil
	at com.demo2.controller.UsersController.main(UsersController.java:39)
Caused by: java.lang.ClassNotFoundException: cn.hutool.core.util.StrUtil
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)

把整体项目运行起来就没有问题,单独运行java的main方法就是出现问题。

俺就安心的好好学习一下吧

NoClassDefFoundError和NoClassDefFoundExtension

同。

  1. NoClassDefFoundError
    这个异常通常发生在Java程序试图使用一个类,但是这个类在编译时是可用的,而在运行时却找不到。这可能是因为类文件在运行时没有被加载到类路径中,或者类文件在运行时已经被破坏或丢失。这个错误通常表明类路径设置不正确,或者类文件在编译和运行之间发生了变化。

  2. NoClassDefFoundExtension
    这个错误并不是Java中的一个标准异常,它看起来像是一个拼写错误或者是一个自定义的异常。如果你遇到了这个错误,它可能是由以下原因造成的:

  • 拼写错误:可能是NoClassDefFoundError的拼写错误。
  • 自定义异常:可能是某个特定的库或框架定义的自定义异常,用于表示类似的类定义问题。
  • 其他错误:可能是由于其他原因导致的错误,但被错误地记录为NoClassDefFoundExtension

解决思路

IntelliJ IDEA 配置错误


 IntelliJ IDEA 的项目设置中类路径没有正确配置,JVM 无法找到项目的类或依赖项。


Maven 配置错误

Maven 使用名为 pom.xml 的文件来描述项目的配置和依赖关系。如果在 pom.xml 文件中出现错误,可能会导致 NoClassDefFoundError。

我的错误

我检查了我idea,是存在的。

检查Maven的依赖

子项目的依赖,没有版本号。

<dependency>
	<groupId>cn.hutool</groupId>
	<artifactId>hutool-all</artifactId>
</dependency>

所以在父类的项目中查看pom的 dependencyManagement中hutool的dependency

<dependency>
	<groupId>cn.hutool</groupId>
	<artifactId>hutool-all</artifactId>
	<version>5.8.22</version>
	<scope>provided</scope>
</dependency>

中的scope是provided。为什么是它呢去掉了<scope>provided</scope>。

就可以正常运行了。

学习一maven的 scope属性吧。

maven的 scope

在Maven中,scope 是一个属性,用于定义依赖项在哪些阶段可用。Maven 提供了以下几种依赖范围:

  1. compile (默认)
    • 编译依赖在所有的阶段都可用。

    • 如果一个依赖没有显式指定范围,那么它默认就是 compile 范围。

  2. provided
    • 提供依赖表示该依赖在编译和测试时需要,但在打包和运行时不需要。

    • 通常用于那些在运行时由容器或运行环境提供的依赖,例如Servlet API。

  3. runtime
    • 运行时依赖在编译时不需要,但在运行时需要。

    • 通常用于那些在运行时需要的库,例如JDBC驱动。

  4. test
    • 测试依赖只在测试阶段需要,不会包含在最终的打包中。

    • 通常用于那些只在测试时需要的库,例如JUnit。

  5. system
    • 系统依赖与 provided 类似,但需要显式指定一个系统路径。

    • 这个范围很少使用,因为它可能会引入安全问题。

  6. import
    • 导入依赖用于Maven的依赖管理,它允许你在一个pom文件中定义依赖,然后被其他pom文件导入。

  7. optional
    • 可选依赖表示该依赖可以被其他依赖使用,但不是必须的。

    • 如果一个依赖被标记为 optional,那么使用这个依赖的项目可以选择是否包含这个依赖。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值