Windows命令行运行Java程序报NoClassDefFoundError,设置PATH为何无效?
Java NoClassDefFoundError 问题排查与解决
为什么加PATH没用?
Windows的PATH环境变量负责让系统定位可执行程序(比如java.exe、javac.exe),Java虚拟机(JVM)不会从PATH中查找依赖的jar包。你遇到的java.lang.NoClassDefFoundError是因为JVM找不到org/apache/commons/codec/binary/Hex这个类,根源是这个类所在的commons-codec-1.5.jar没被加入Java的类路径(classpath)。
正确的解决方法
运行时直接指定类路径
使用-cp(或-classpath)参数,把jar包的完整路径(或所在文件夹)加入类路径。示例命令:java -cp path_to_folder_with_commons/commons-codec-1.5.jar;. YourMainClassName说明:Windows下用分号
;分隔多个路径,.代表当前目录(如果你的主类字节码文件在当前目录的话)。临时设置CLASSPATH环境变量
若不想每次运行都手动输入-cp,可以临时设置CLASSPATH:SET CLASSPATH=path_to_folder_with_commons/commons-codec-1.5.jar;. java YourMainClassName注意:该设置仅在当前命令行窗口生效,关闭窗口后会恢复默认值。
关键注意点
- 确认jar包路径拼写正确,避免文件夹名或jar文件名错误
- 若有多个依赖jar包,需全部添加到类路径中,用分号分隔
内容的提问来源于stack exchange,提问作者Dylan Hettinger
相关产品推荐
相关产品推荐

