1

作为我们项目的一部分,我们的大部分模块都是使用 java 1.5 开发的,但其他一些模块已经迁移到 java 1.6。

JAVA_HOME 指向 java 1.5 版本,这就是 ant 开始的方式。

为了使用正确版本的 java 编译我们的模块,我们使用 javac ant 任务支持的 fork、可执行文件和编译器设置。

然而,当运行 checkstyle 任务时,似乎没有这样的“fork”等价物,并且 checkstyle 将始终以任何 ant 开头的方式运行(在我们的例子中是 java 1.5)。这将导致我们的某些类出现一些 checkstyle 错误。

[checkstyle] ...\SomeJavaClass.java:0: 出现异常 - java.lang.UnsupportedClassVersionError: .class 文件中的版本号错误

将 JAVA_HOME 更改为指向 java 1.6 可以解决运行 java 1.6 模块的 checkstyle 任务时的问题,但是在运行 Jenkins 构建时这不是一个选项。

关于如何解决这个问题的任何想法?我确信我不是第一个遇到这个问题的人,谷歌帮不上什么忙。先感谢您。朱利安

4

1 回答 1

0

好问题。您可以使用JavaExec Ant 任务来执行 checkstyle 而不是通过 checkstyle ant 任务。这样,您可以在每次执行时选择 JVM,甚至可以并行执行(例如通过 ant-contrib 的ForEach任务)。这是从命令行运行 checkstyle 的方法。

.class此外,您可以从 checkstyle 运行中排除文件。然后也许它会停止抱怨。Checkstyle 不需要类文件,因为它完全在 Java 源代码上运行。

于 2013-01-31T20:16:38.350 回答