Java运行失败主因是类路径或命名不匹配:需确保public类名与.java文件名完全一致(含大小写),在正确目录下编译运行,CLASSPATH包含当前目录(.),并确认.class文件真实生成。

这个问题很常见,不是代码写错了,而是Java找不到你写的那个主类文件。关键在于理解Java运行时怎么找类、从哪找、找什么名字。
检查文件名和类名是否完全一致
public类的名字必须和.java文件名一模一样,包括大小写。比如写了public class HelloWorld,那文件就必须叫HelloWorld.java,不能是helloworld.java、helloWorld.java或HelloWorld.txt。很多新手输错大小写或后缀,一编译就失败,自然运行不了。
- 新建文件时,直接复制类名粘贴为文件名,避免手打失误
- 如果类没加public修饰符,文件名可以不同,但运行时仍需用类名(不含.java)调用
- 用dir(Windows)或ls(macOS/Linux)确认当前目录下确实有对应.class文件
确认是否在正确路径下运行
Java默认只在当前命令行所在目录里找.class文件。如果你在桌面写了HelloWorld.java,编译完却跑到C盘根目录下敲java HelloWorld,JVM根本看不到它。
- 先用cd命令进入源文件所在目录,再执行javac HelloWorld.java编译
- 编译成功后,确保.class文件生成在同一目录,再运行java HelloWorld
- 如果用了package(比如package com.test;),就得把.java文件放在com/test/子目录中,并从com的父目录运行java com.test.HelloWorld
验证CLASSPATH有没有漏掉当前目录
CLASSPATH告诉Java去哪些地方找类。它的默认值本应包含当前目录(用一个点.表示),但如果被手动改过,可能就没了。
立即学习“Java免费学习笔记(深入)”;
- Windows下输入echo %CLASSPATH%,macOS/Linux输入echo $CLASSPATH
- 如果输出为空,或没有.,说明当前目录不在搜索范围内
- 临时解决:运行时显式加上-cp .,例如java -cp . HelloWorld
看清楚是不是真编译成功了
javac报错或只有警告时,.class文件可能根本没生成,或者生成在别处。别光看有没有报红字,要确认.class文件真实存在。
- 编译后立刻用dir HelloWorld.class或ls HelloWorld.class查文件
- 如果用javac -d out HelloWorld.java指定了输出目录,运行时就得用java -cp out HelloWorld
- 中文系统容易因编码问题编译失败,可加参数javac -encoding UTF-8 HelloWorld.java


















