作为我们项目的一部分,我们的大部分模块都是用java 1.5开发的,但其他一些模块已经转移到java 1.6了。
JAVA_HOME指向java 1.5版本,ant就是这样开始的。
我们使用javac ant task支持的fork、可执行文件和编译器设置来编译我们的模块。
然而,当运行checkstyle任务时,似乎没有这样的"fork"等同,并且checkstyle将始终与ant开始的任何内容一起运行(在我们的示例中是java 1.5)。这将导致一些类的checkstyle错误。
[checkstyle]… somejavacclass .java:0:得到一个异常- java.lang.UnsupportedClassVersionError: .class文件中的错误版本号
更改JAVA_HOME指向java 1.6修复了在运行java 1.6模块的checkstyle任务时的问题,但是在运行Jenkins构建时这不是一个选项。
你知道如何解决这个问题吗?我相信我不是第一个,我有这个问题,谷歌不能帮助太多。提前谢谢你。朱利安
问得好。您可以使用Java或Exec Ant任务来执行checkstyle,而不是遍历checkstyle Ant任务。这样,您就可以在每次执行时选择JVM,甚至可以并行执行(例如,通过ant-contrib的ForEach任务)。下面是如何从命令行运行checkstyle。
同样,您可以从检查样式运行中排除.class
文件。然后也许它会停止抱怨。Checkstyle不需要类文件,因为它完全在Java源代码上操作。