You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:19:34