Java编译成功但CMD运行提示找不到类问题求助
解决CMD编译运行带包的Java程序找不到类的问题
嘿,我刚从C++转Java的时候也踩过这个包路径的坑,太懂你现在的困惑了!咱们一步步来搞定它:
问题根源
你的代码里加了package helloworld;,这意味着这个类属于helloworld包。Java的类加载机制要求必须从包的根目录(也就是包含helloworld文件夹的那个目录)来运行程序,而你之前一直在helloworld子目录里操作,JVM找不到正确的包结构,自然会报找不到类的错误。
具体操作步骤
第一步:回到包的根目录
打开CMD,先切换到你的src目录(这才是包的根目录,因为它下面有helloworld子文件夹):
cd C:\Users\eatmybuns\Documents\NetBeansProjects\Helloworld\src
第二步:编译代码(推荐指定输出目录)
用javac编译时加上-d参数,让编译器自动帮你生成和包结构对应的目录,把class文件放在正确的位置:
javac helloworld/Helloworld.java -d .
这里的-d .表示把编译生成的class文件输出到当前目录(也就是src目录),执行完后你会看到src下多了一个helloworld文件夹,里面就是编译好的Helloworld.class文件。
第三步:运行程序
现在在src目录下,直接通过包名+类名的方式运行:
java helloworld.Helloworld
这样JVM就能从当前目录(包根路径)找到helloworld包下的Helloworld类,顺利输出Hello world啦!
额外小提示
- 如果之前你已经在
helloworld子目录编译过,生成了Helloworld.class在那个子目录里,也可以不用重新编译,直接回到src目录,执行上面的运行命令就行,效果是一样的。 - 注意大小写!Java是大小写敏感的,你的类名是
Helloworld(首字母大写),运行时千万别写成helloworld或者其他大小写组合。
内容的提问来源于stack exchange,提问作者eatmybananapls
相关产品推荐
相关产品推荐

