maven запускать и строить с --add-exports

Я пытаюсь запустить свое приложение с InteliJ и Maven на машине Win 10. Если я бегу

mvn clean javafx:run

Мой графический интерфейс запускается, но если я использую текстовое поле из org.controlsfx.control.textfield.TextFields, я сталкиваюсь с проблемой

Exception in thread "JavaFX Application Thread" java.lang.IllegalAccessError: class org.controlsfx.control.textfield.AutoCompletionBinding (in unnamed module @0x19b440d0) cannot access class com.sun.javafx.event.EventHandlerManager (in module javafx.base) because module javafx.base does not export com.sun.javafx.event to unnamed module @0x19b440d0

Я обнаружил, что это известная проблема, и вам нужно передать JVM следующую команду.

--add-exports=javafx.base/com.sun.javafx.event=org.controlsfx.controls

Но как мне это сделать в maven? я пробовал 2 способа.

Способ 1: используйте файл.mvn/jvm.config и добавьте эту команду, но это вообще ничего не меняет, даже если туда ввести бессмысленный материал.

Способ 2: добавление системной переменной MAVEN_OPTS с помощью команды --add-export. Затем maven отреагирует на это изменение, но скажет:

WARNING: Unknown module: org.controlsfx.controls specified to --add-exports

Как я могу это исправить?

изменить: Способ 3: в соответствии с https://github.com/openjfx/javafx-maven-plugin должно быть возможно добавить в javafx-maven-plugin этот --add-export, но InteliJ отметит это как недопустимое, что этот элемент нельзя использовать в этом месте

<plugin>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>0.0.4</version>
    <configuration>
        <compilerArgs>
            <arg>--add-exports</arg>
            <arg>javafx.graphics/com.sun.glass.ui=org.openjfx.hellofx</arg>
        </compilerArgs>
        <mainClass>org.openjfx.hellofx/org.openjfx.App</mainClass>
    </configuration>
</plugin>

https://github.com/openjfx/javafx-maven-plugin/issues/53 кажется известным, но не рассматривается как проблема

1 ответ

Для тех, кто обнаружит эту проблему, плагин javaFX больше не поддерживает параметры компилятора, как описано в способе 3.

Вам нужно будет добавить аргументы в свой плагин компилятора следующим образом:

      <build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.8.1</version>
      <configuration>
        <compilerArgs>
          <arg>--add-exports</arg>
          <arg>java.management/sun.management=ALL-UNNAMED</arg>
        </compilerArgs>
      </configuration>
    </plugin>
  </plugins>
</build>
Другие вопросы по тегам