Erreur PMD - Impossible d'utiliser JDK 1.5 pour la syntaxe de boucle lors de l'exécution en mode JDK 1.4!
Lorsque j'intègre Hudson et PMD ensemble pour exécuter le processus d'analyse de code statique PMD dans mon projet Web. J'ai frappé le message d'erreur suivant. Au fait, j'utilise Maven 2 pour gérer mon projet Web.
Caused by: net.sourceforge.pmd.ast.ParseException: Can't use JDK 1.5 for loop syntax when running in JDK 1.4 mode! at net.sourceforge.pmd.ast.JavaParser.checkForBadJDK15ForLoopSyntaxArgumentsUsage (JavaParser.java:36) at net.sourceforge.pmd.ast.JavaParser.ForStatement(JavaParser.java:4517) at net.sourceforge.pmd.ast.JavaParser.Statement(JavaParser.java:3969) at net.sourceforge.pmd.ast.JavaParser.BlockStatement(JavaParser.java:4100) at net.sourceforge.pmd.ast.JavaParser.Block(JavaParser.java:4061) at net.sourceforge.pmd.ast.JavaParser.MethodDeclaration(JavaParser.java:1333) at net.sourceforge.pmd.ast.JavaParser.ClassOrInterfaceBodyDeclaration(JavaParser.java:1007) at net.sourceforge.pmd.ast.JavaParser.ClassOrInterfaceBody(JavaParser.java:926) at net.sourceforge.pmd.ast.JavaParser.ClassOrInterfaceDeclaration(JavaParser.java:463) at net.sourceforge.pmd.ast.JavaParser.TypeDeclaration(JavaParser.java:355) at net.sourceforge.pmd.ast.JavaParser.CompilationUnit(JavaParser.java:126) at net.sourceforge.pmd.parsers.Java14Parser.parse(Java14Parser.java:17) at net.sourceforge.pmd.PMD.processFile(PMD.java:89) at net.sourceforge.pmd.PMD.processFile(PMD.java:66) at net.sourceforge.pmd.PMD.processFile(PMD.java:152)
Le message d'erreur «Can’t use JDK 1.5 for loop syntax when running in JDK 1.4 mode» ressemble à un problème incompatible avec JDK. PMD default JDK is using 1.4, we need to specify the PMD JDK version manually in Maven pom.xml file.
maven-pmd-plugin 2.3 1.5
Terminé, PMD s'exécute sans erreur.
P.S Do not put targetJdk = 1.6, cause PMD only support 1.4 and 1.5 at the moment, put JDK1.6 will make PMD ignore the setting and use JDK1.4 instead.