Sublime Text 3执行Java代码抛出java.lang.ClassNotFoundException,Notepad++无此问题
解决Sublime Text 3运行Java代码抛出ClassNotFoundException的问题
我之前也碰到过一模一样的情况,本质是Sublime默认的Java构建系统没处理好编译输出路径和运行时的类查找逻辑。你说Notepad运行后Sublime就能正常,是因为Notepad用标准的javac和java命令在当前目录生成了.class文件,之后Sublime运行时自然能找到这个文件。下面给你一套靠谱的解决步骤:
1. 自定义Sublime的Java构建系统
默认的Java构建脚本没有明确指定工作目录,导致编译出的class文件不在预期位置,或者运行时找不到类。我们自己写一个更稳妥的构建配置:
- 打开Sublime Text 3,点击顶部菜单栏的
Tools->Build System->New Build System - 清空默认内容,替换成以下代码:
{ "cmd": ["javac", "$file_name", "&&", "java", "$file_base_name"], "working_dir": "${file_path}", "selector": "source.java", "shell": true }
- 保存这个文件,命名为
JavaCustom.sublime-build(保存时会自动定位到Sublime的构建系统目录,直接保存就行)
2. 用自定义构建系统运行代码
- 打开你的
Main.java文件,点击Tools->Build System,选择刚才创建的JavaCustom - 按下
Ctrl+B(Windows/Linux)或Cmd+B(Mac)就能编译并运行代码了
3. 关键配置说明
"working_dir": "${file_path}":强制让javac和java命令在当前Java文件所在的目录执行,这样编译出的.class文件会直接存在当前目录,运行时java命令能立刻找到它"cmd"里的$file_name是当前打开的完整文件名(比如Main.java),$file_base_name是去掉后缀的文件名(比如Main),确保编译和运行的是同一个类
额外注意点
- 先确认Java环境变量配置正确:打开终端/命令提示符,输入
javac -version和java -version,能正常输出版本信息就没问题 - 你的Java文件名必须和类名完全一致(比如
Main类对应Main.java),这点你已经做到了,但还是提一句避免后续踩坑
现在可以删掉之前生成的.class文件,再用Sublime运行代码,应该就不会再出现ClassNotFoundException了。
内容的提问来源于stack exchange,提问作者Z.Richard
相关产品推荐
相关产品推荐

