Фатальная ошибка компиляции: Не удалось запустить компилятор ecj: Нераспознанная опция: --module-version - PullRequest
0 голосов
/ 11 июня 2019

Попытка запустить следующую комбинацию:

  • Maven (3.6.1)
  • OpenJDK 11
  • С module-info.java
Fails with the following error message:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project tourconex: Fatal error compiling: Fa
iled to run the ecj compiler: Unrecognized option : --module-version -> [Help 1]

Попытался добавить пустой узел compilerArgs, но безрезультатно.

Удаление module-info.java устраняет проблему, но это не то, что я хочу.

Кроме того, посмотрел источник http://central.maven.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/3.8.1/

специально на источник CompilerMojo.java:

module-version всегда добавляется, поэтому кажется, что нет способа его подавить:

compilerArgs.add( "--module-version" );
compilerArgs.add( getProject().getVersion() );

Если посмотреть документацию по ecj, аргумента "module-version" нет

https://help.eclipse.org/oxygen/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-using_batch_compiler.htm

Похоже, в данный момент это просто не сработает!?

Раздел плагина Maven:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <compilerId>eclipse</compilerId>
        <source>11</source>
        <target>11</target>
        <release>11</release>
        <showWarnings>true</showWarnings>
        <showDeprecation>true</showDeprecation>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-compiler-eclipse</artifactId>
            <version>2.8.5</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jdt</groupId>
            <artifactId>ecj</artifactId>
            <version>3.17.0</version>
        </dependency>
    </dependencies>
</plugin>

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Открытая проблема / запрос функции на eclipse.org: https://bugs.eclipse.org/bugs/show_bug.cgi?id=548195

0 голосов
/ 11 июня 2019

До сих пор ecj не поддерживает параметр --module-version.

Возможно, он провалился в трещины по нескольким возможным причинам:

  • никто не заботился, потому что версия модуля не оценивается ни JVM, ни другими инструментами
  • возможно, он не был указан как новый параметр компилятора до Java 9 GA (http://openjdk.java.net/jeps/261 не имеет истории версий, но я знаю, что текст был значительно изменен прямо в день выпуска).

Пожалуйста, отправьте запрос функции на https://bugs.eclipse.org/bugs/enter_bug.cgi?product=JDT

Редактировать : Ваш запрос функции был выполнен. Хотя мы пропустили сегодняшний выпуск Eclipse 2019-06, вы можете получить файл ecj.jar из следующей сборки интеграции ниже https://download.eclipse.org/eclipse/downloads/index.html - следующий полный выпуск запланирован на сентябрь.

Edit2: После дальнейших исследований простейшим решением может стать возврат к версии 3.8.0 модуля maven-compiler-plugin, который не пытается передать --module-version компилятору. Это происходит только после выхода версии 3.8.1 в мае.

...