OpenJDK 11 + OpenJFX 11 через maven не запускается внутри Eclipse 2018-09 + патч Java 11 - PullRequest
0 голосов
/ 16 октября 2018

В настоящее время я нахожусь на пути конвертации некоторых своих проектов из Oracle JDK8 + JavaFX8 в OpenJDK11 + OpenJFX11.На данный момент я пытаюсь понять, как использовать OpenJFX11 в качестве библиотеки через Maven.Я раньше использовал maven, люблю простое управление зависимостями.

Я понял это так, что когда я просто добавляю openjfx в качестве pom-зависимостей, maven обрабатывает его полностью, и мне не нужно настраивать что-либо связанное с java-модулем.

Это релевантная часть моего pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  [...]

  <dependencies>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.11.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.11.1</version>
    </dependency>

    <dependency>
      <groupId>org.openjfx</groupId>
      <artifactId>javafx-base</artifactId>
      <version>11</version>
    </dependency>
    <dependency>
      <groupId>org.openjfx</groupId>
      <artifactId>javafx-controls</artifactId>
      <version>11</version>
    </dependency>
    <dependency>
      <groupId>org.openjfx</groupId>
      <artifactId>javafx-graphics</artifactId>
      <version>11</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <source>11</source>
                <target>11</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.6.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>java</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>[My Mainclass]</mainClass>
            </configuration>
        </plugin>
    </plugins>
  </build>
</project>

Как вы видите, я изначально хочу, чтобы в качестве зависимостей для моего проекта использовались модули Log4J2 и BAsic JavaFX.Поскольку у меня уже были проблемы с запуском приложений OpenJFX11 через maven, я наткнулся на этот поток: Различное поведение между Maven и Eclipse при запуске приложения JavaFX 11 Так что у меня есть основной класс Entry и мое расширенное приложение JavaFXкласс отделен друг от друга, только один вызывает другого для запуска приложения.

Когда я запускаю этот проект из командной строки через maven

mvn compile exec:java

Он работает нормально, и появляется приложение JavaFX.

Что я не могу сейчас сделать, так это создать конфигурацию запуска внутри eclipse, которая запустит мое приложение внутри Eclipse, чтобы я мог использовать, например, отладчик eclipse.Я попытался создать конфигурацию запуска Maven с точно такими же параметрами: enter image description here

Но когда я запускаю эту конфигурацию, происходит сбой со следующей трассировкой стека:

[WARNING] 
java.lang.NoSuchMethodError: <init>
    at com.sun.glass.ui.win.WinApplication.staticScreen_getScreens (Native Method)
    at com.sun.glass.ui.Screen.initScreens (Screen.java:412)
    at com.sun.glass.ui.Application.lambda$run$1 (Application.java:152)
    at com.sun.glass.ui.win.WinApplication._runLoop (Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3 (WinApplication.java:174)
    at java.lang.Thread.run (Thread.java:834)
[WARNING] 
java.lang.NoSuchMethodError: <init>
    at com.sun.glass.ui.win.WinApplication.staticScreen_getScreens (Native Method)
    at com.sun.glass.ui.Screen.initScreens (Screen.java:412)
    at com.sun.glass.ui.Application.lambda$run$1 (Application.java:152)
    at com.sun.glass.ui.win.WinApplication._runLoop (Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3 (WinApplication.java:174)
    at java.lang.Thread.run (Thread.java:834)
[WARNING] 
java.lang.NullPointerException
    at com.sun.prism.d3d.D3DPipeline.getAdapterOrdinal (D3DPipeline.java:205)
    at com.sun.javafx.tk.quantum.QuantumToolkit.assignScreensAdapters (QuantumToolkit.java:695)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runToolkit (QuantumToolkit.java:313)
    at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$startup$10 (QuantumToolkit.java:258)
    at com.sun.glass.ui.Application.lambda$run$1 (Application.java:153)
    at com.sun.glass.ui.win.WinApplication._runLoop (Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3 (WinApplication.java:174)
    at java.lang.Thread.run (Thread.java:834)

Мне кажется, что отсутствуют собственные библиотеки или методы, и ничего в моем проекте нет.Но обычно в зависимости javafx должны автоматически добавляться системные нативы (в моем случае win появляется в зависимости от maven).

Все, что я нашел, было этой веткой, но я не могу действительно найти решение для своей проблемы из нее: NoSuchMethodError: в com.sun.glass.ui.win.WinApplication.staticScreen_getScreens

Заранее спасибо

1 Ответ

0 голосов
/ 17 октября 2018

ОК, я удалил все экземпляры Java и затмение из моей системы.Переустановил затмение, и теперь оно работает как шарм.Вероятно, это была проблема среды, приводившая к запуску затмения с собственными библиотеками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...