使用javac指定classpath编译导入类报错,如何正确配置?
问题分析与解决
你的错误出在类路径(-cp)的指向逻辑上,Java编译器要求类路径指向的是包含完整包结构的根目录,而非包本身的目录。
错误原因
你执行的javac Foo.java -cp ../bar,是把类路径指向了bar包所在的目录(也就是bar文件夹)。此时编译器会在../bar下去找bar.Bar对应的路径,也就是../bar/bar/Bar.class,这显然不存在,所以会提示包找不到。
正确操作步骤
步骤1:先编译Bar类
你需要先把Bar.java编译成.class文件,有两种方式:
- 在项目根目录(包含
bar和foo的目录)执行:javac bar/Bar.java - 或者进入
bar目录执行:cd bar javac Bar.java
执行后,bar目录下会生成Bar.class文件。
步骤2:编译Foo类
在foo目录下执行,把类路径指向项目根目录(当前foo目录的上级目录,即包含bar包的根目录):
javac Foo.java -cp ..
更简便的方式
直接在项目根目录执行编译命令,默认类路径是当前目录,编译器会自动识别包结构:
javac foo/Foo.java
内容的提问来源于stack exchange,提问作者Liam
相关产品推荐
相关产品推荐

