使用javac的Makefile编译TitularInterfaz时出现规则缺失错误
Java Makefile编译错误:"没有构建目标'-encoding'的规则"
问题根源
你的Makefile片段存在两个格式错误,直接导致了编译失败:
- 依赖列表末尾多了反斜杠:最后一个依赖项
./src/fp2/poo/utilidades/TitularInterfaz.java末尾的反斜杠,让Make把后续的/bin/javac $(OPCIONES)...当成了目标的依赖项,而非编译命令。当$(OPCIONES)展开后,-encoding就被识别成了需要构建的依赖目标,自然找不到对应规则。 - 编译命令未用Tab缩进:Make要求规则中的命令必须以Tab键开头,否则会被当作依赖项处理,这进一步加剧了依赖解析的混乱。
修正后的Makefile片段
./bin/fp2/poo/utilidades/TitularInterfaz.class: ./bin/fp2/poo/utilidades/CodigoPostalInterfaz.class \ ./bin/fp2/poo/utilidades/CorreoElectronicoInterfaz.class \ ./bin/fp2/poo/utilidades/Excepciones/DniIncorrectoExcepcion.class \ ./bin/fp2/poo/utilidades/DniInterfaz.class \ ./src/fp2/poo/utilidades/TitularInterfaz.java /bin/javac $(OPCIONES) ./src/fp2/poo/utilidades/TitularInterfaz.java
注意:
- 最后一个依赖项末尾没有反斜杠
- 编译命令行开头是Tab键(不能用空格替代)
额外排查点
- 关于终端无法识别javac的问题:执行
echo $JAVA_HOME和which javac确认Java环境变量配置,确保$JAVA_HOME/bin在系统PATH中。既然其他类能正常编译,可统一使用javac命令(前提是PATH配置正确)。 - 验证
OPCIONES变量定义:确保没有多余空格或换行,示例正确定义:
OPCIONES = -encoding ISO-8859-1 -g -Xlint -classpath ./bin/ -d ./bin/
内容的提问来源于stack exchange,提问作者RODSIN
相关产品推荐
相关产品推荐

