UnsupportedClassVersionError из maven-pmd-plugin для проекта Java 11 - PullRequest
0 голосов
/ 14 декабря 2018

Мы переносим наши проекты java 8 на java 11. JAVA_HOME по-прежнему указывает на java 8, но первый проект, который будет перенесен, компилируется в java 11, и модульные тесты выполняются просто отлично.

Плагин maven-compiler-plugin и набор инструментов определены как в этом вопросе .Версия Maven - 3.5.0.

Когда я запускаю

mvn verify

, я получаю следующую ошибку:

Failed to execute goal org.apache.maven.plugins:maven-pmd-plugin:3.11.0:
pmd (pmd) on project <yourproject>: 
  Execution pmd of goal org.apache.maven.plugins:maven-pmd-plugin:3.11.0:
  pmd failed: An API incompatibility was encountered while executing 
  org.apache.maven.plugins:maven-pmd-plugin:3.11.0:pmd: 
    java.lang.UnsupportedClassVersionError: 
       <Yourclass> has been compiled by a more recent version of the Java Runtime 
       (class file version 55.0), this version of the Java Runtime only recognizes 
       class file versions up to 52.0    //(indentation added for readability)

Я понимаю, что классы были скомпилированы с использованием Java 11(как и предполагалось), и этот maven работает на Java 8, потому что именно на это указывает JAVA_HOME.Но почему это отключает pmd-plugin ?Он должен проверять исходный код, не говоря уже о скомпилированных классах.

Есть ли способ обойти это, если не считать JAVA_HOME равным 11?

1 Ответ

0 голосов
/ 14 декабря 2018

На самом деле PMD заботится о скомпилированных классах для разрешения типов.

PMD может проверять типы переменных, типы возвращаемых методов и т. Д. Для использования в своем анализе.Для этого PMD использует скомпилированные классы и полный путь к классу зависимостей.

Вы можете отключить это с помощью конфигурации плагина, установив для свойства typeResolution значение false, но имейте в виду , некоторые правила основаны на этой информации, и, когда они недоступны, работают на основе best best , что означает, что вы получите больше ложных / отрицательных результатов в анализе.

Качество анализа PMD значительно ухудшается из-за отсутствия разрешения типов.

...