Java新手求助:IntelliJ中包编译方法及javac编译报错解决
解决手动javac编译带包Java文件的错误
错误原因
你的包名是com.amigoscode和com.amigoscode.people,但编译时的目录操作不符合Java包与目录对应的规则:
- Java要求包名严格对应目录结构,比如
com.amigoscode.people包的类文件必须放在com/amigoscode/people目录下 - 你直接执行
javac people/People.java,生成的People.class没有放在正确的包目录中,导致编译Main.java时找不到com.amigoscode.people包
正确的目录结构(必须和包名匹配)
项目根目录/ └── com/ └── amigoscode/ ├── Main.java └── people/ └── People.java
正确的手动编译步骤
- 打开终端,切换到项目根目录(也就是
com目录的上级目录) - 编译
People.java:
执行后,javac com/amigoscode/people/People.javacom/amigoscode/people目录下会生成People.class文件 - 编译
Main.java(指定类路径为当前目录,确保能找到依赖的类):
执行后,javac -cp . com/amigoscode/Main.javacom/amigoscode目录下会生成Main.class文件 - 运行程序:
java com.amigoscode.Main
IntelliJ能正常运行的原因
IntelliJ会自动维护包与目录的对应关系,编译时将生成的.class文件放在指定输出目录(默认是out/production/项目名),并自动配置类路径,不需要手动处理这些细节。
内容的提问来源于stack exchange,提问作者desh
相关产品推荐
相关产品推荐

