Java 11编译测试类提示package does not exist错误求助
错误原因分析
- 工作目录不匹配:你当前的执行路径是
C:\Users\ruthm\Documents\java\logic,Java编译器解析logic包时,会默认从当前工作目录下寻找名为logic的子目录来匹配包名,但你已经处在logic目录内部,自然找不到对应的包目录结构。 - 环境变量生效问题:如果修改系统CLASSPATH后没有重启命令行窗口,配置的CLASSPATH不会生效,也会导致编译器找不到包路径。
解决方法
方法1:从CLASSPATH根目录执行编译(推荐,符合Java项目标准操作规范)
- 切换工作目录到CLASSPATH对应的根路径:
执行命令:cd C:\Users\ruthm\Documents\java - 编译logic包下的Connector类:
执行命令:javac logic/Connector.java - 编译测试类:
执行命令:javac logic/ConnectorTest.java - 运行测试类:
执行命令:java logic.ConnectorTest
如果你后续打算把ConnectorTest也归入logic包,只需要在ConnectorTest.java开头加package logic;,再按上述步骤操作即可,不会出现报错。
方法2:在当前logic目录下编译,手动指定CLASSPATH
如果你不想切换目录,直接在C:\Users\ruthm\Documents\java\logic路径下操作,可以通过-cp参数手动指定根目录,优先级高于系统环境变量,更稳妥:
- 编译Connector:
javac Connector.java - 编译测试类:
javac -cp C:\Users\ruthm\Documents\java ConnectorTest.java - 运行测试类:
java -cp C:\Users\ruthm\Documents\java logic.ConnectorTest
注意:Java包结构必须和目录结构严格对应,包名的每一级都对应一级同名目录,所有包的根目录都需要加入CLASSPATH才能被编译器识别。
内容的提问来源于stack exchange,提问作者PeppermintBarnstorm
相关产品推荐
相关产品推荐

