如何运行包含多个公有类的Java包?运行com.choice包报ClassNotFoundException
报错核心原因
java.lang.ClassNotFoundException异常的本质是JVM无法按照包声明的路径找到对应的class文件:带package com.choice;声明的类,全限定类名为com.choice.ShopApp,JVM会默认到当前路径下的com/choice目录中查找ShopApp.class,你直接用javac *.java编译生成的class文件都在当前根目录,不符合包结构要求,自然找不到类。
正确操作流程
1. 源文件校验
确保ShopApp.java、Customer.java、Clothing.java三个文件的首行都有正确的包声明:
package com.choice;
2. 编译命令
不需要手动创建包目录,直接在三个源文件所在的目录执行以下编译命令即可:javac -d . *.java
参数说明:-d用于指定编译生成的class文件的根目录,.代表当前目录,javac会自动按照包声明生成com/choice层级目录,并把对应class文件放到该目录下。
3. 运行命令
要在com文件夹所在的根目录执行,必须写类的全限定名,不能加.class后缀:java com.choice.ShopApp
如果仍然报错,可以手动指定classpath为当前目录:java -cp . com.choice.ShopApp
禁止的错误操作
- 不要进入
com/choice目录下执行java ShopApp - 不要写成
java com.choice.ShopApp.class
内容的提问来源于stack exchange,提问作者ShriBo
相关产品推荐
相关产品推荐

