使用Ant构建zeitgeist项目遇Java版本兼容错误求助
问题:使用Ant构建Zeitgeist项目时遇Java版本兼容错误
错误现象
执行ant clean dist命令时触发编译错误:
[javac] error: Source option 6 is no longer supported. Use 8 or later. [javac] error: Target option 6 is no longer supported. Use 8 or later.
完整构建失败日志:
ANT_OPTS is set to -Djava.security.manager=allow Buildfile: C:\Users\josep\Not_Junk\Temp\zeitgeist-master\build.xml clean: [delete] Deleting directory C:\Users\josep\Not_Junk\Temp\zeitgeist-master\core\build core: [mkdir] Created dir: C:\Users\josep\Not_Junk\Temp\zeitgeist-master\core\build\classes\main [mkdir] Created dir: C:\Users\josep\Not_Junk\Temp\zeitgeist-master\core\build\generated\main [javac] Compiling 16 source files to C:\Users\josep\Not_Junk\Temp\zeitgeist-master\core\build\classes\main [javac] warning: [options] bootstrap class path not set in conjunction with -source 6 [javac] error: Source option 6 is no longer supported. Use 8 or later. [javac] error: Target option 6 is no longer supported. Use 8 or later. BUILD FAILED C:\Users\josep\Not_Junk\Temp\zeitgeist-master\build.xml:68: The following error occurred while executing this line: jar:file:/C:/Users/josep/Not_Junk/Temp/zeitgeist-master/lib/compiletime/uncommons-antlib-0.3.3.jar!/org/uncommons/antlib/antlib.xml:120: The following error occurred while executing this line: jar:file:/C:/Users/josep/Not_Junk/Temp/zeitgeist-master/lib/compiletime/uncommons-antlib-0.3.3.jar!/org/uncommons/antlib/antlib.xml:83: Compile failed; see the compiler error output for details. Total time: 0 seconds
当前环境
本地Java版本信息:
>java -version java version "20" 2023-03-21 Java(TM) SE Runtime Environment (build 20+36-2344) Java HotSpot(TM) 64-Bit Server VM (build 20+36-2344, mixed mode, sharing) >javac -version javac 20
问题背景
项目根目录的build.xml中未找到<target name="javac"...>或编译器相关配置,无法直接修改编译版本参数。
解决方案
从错误日志可知,编译配置来自项目依赖的uncommons-antlib-0.3.3.jar内置任务,而非根目录的build.xml,可通过以下方式解决:
方式一:命令行临时指定版本参数
执行构建命令时,添加全局参数覆盖默认的source和target版本:
ant clean dist -Dant.build.javac.source=8 -Dant.build.javac.target=8
此方式无需修改配置文件,仅本次构建生效。
方式二:修改项目build.xml全局配置
在项目根目录的build.xml开头,添加全局属性配置,让所有编译任务统一使用Java 8参数:
<project ...> <!-- 新增以下两行,放在project标签内最上方 --> <property name="ant.build.javac.source" value="8"/> <property name="ant.build.javac.target" value="8"/> <!-- 原有项目配置内容 --> </project>
修改后执行ant clean dist即可自动应用新的编译版本。
方式三:降级本地Java版本(不推荐)
若上述方法无效,可临时安装Java 8并切换环境后构建,但该方式会影响其他项目的环境配置,建议优先使用前两种方案。
内容的提问来源于stack exchange,提问作者JJWakes
相关产品推荐
相关产品推荐

