OpenJDK 11+;通过maven的OpenJFX 11未能在Eclipse 2018-09内部运行+;Java 11修补程序

OpenJDK 11+;通过maven的OpenJFX 11未能在Eclipse 2018-09内部运行+;Java 11修补程序,java,eclipse,maven,javafx,Java,Eclipse,Maven,Javafx,我目前正在将我的一些项目从OracleJDK8+JavaFX8转换为OpenJDK11+OpenJFX11。 目前,我正试图了解如何通过maven使用OpenJFX11作为库。 我以前用过maven,喜欢轻松的依赖关系管理 我是这样理解的,当我只是添加openjfx作为pom依赖项时,maven会完全处理它,我不需要配置任何与java模块相关的东西 这是我的pom的相关部分: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:

我目前正在将我的一些项目从OracleJDK8+JavaFX8转换为OpenJDK11+OpenJFX11。 目前,我正试图了解如何通过maven使用OpenJFX11作为库。 我以前用过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>
它运行良好,JavaFX应用程序弹出

我现在不能做的是在eclipse中创建一个启动配置,它将在eclipse中启动我的应用程序,这样我就可以使用eclipse调试器。 我尝试使用完全相同的参数创建Maven启动配置:

但当我启动此配置时,它会失败,并出现以下stacktrace:

[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)
[警告]
java.lang.NoSuchMethodError:
在com.sun.glass.ui.win.WinApplication.staticScreen\u getScreens上(本机方法)
位于com.sun.glass.ui.Screen.initScreens(Screen.java:412)
在com.sun.glass.ui.Application.lambda$run$1(Application.java:152)
在com.sun.glass.ui.win.WinApplication.\u runLoop(本机方法)
位于com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
在java.lang.Thread.run(Thread.java:834)
[警告]
java.lang.NoSuchMethodError:
在com.sun.glass.ui.win.WinApplication.staticScreen\u getScreens上(本机方法)
位于com.sun.glass.ui.Screen.initScreens(Screen.java:412)
在com.sun.glass.ui.Application.lambda$run$1(Application.java:152)
在com.sun.glass.ui.win.WinApplication.\u runLoop(本机方法)
位于com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
在java.lang.Thread.run(Thread.java:834)
[警告]
java.lang.NullPointerException
位于com.sun.prism.d3d.D3DPipeline.getAdapterOrdinal(D3DPipeline.java:205)
在com.sun.javafx.tk.quantum.QuantumToolkit.assignScreensAdapters上(QuantumToolkit.java:695)
位于com.sun.javafx.tk.quantum.QuantumToolkit.runToolkit(QuantumToolkit.java:313)
在com.sun.javafx.tk.quantum.QuantumToolkit.lambda$startup$10(QuantumToolkit.java:258)
在com.sun.glass.ui.Application.lambda$run$1(Application.java:153)
在com.sun.glass.ui.win.WinApplication.\u runLoop(本机方法)
位于com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
在java.lang.Thread.run(Thread.java:834)
在我看来,这似乎是因为我的项目中缺少了本机库或方法,而没有任何直接内容。但是通常javafx依赖项应该自动添加系统本机(在我的例子中,它出现在maven依赖项下)

我只找到了这条线索,但我无法从中找到解决问题的方法:


提前感谢

好的,我从系统中卸载了所有java实例和eclipse。重新安装了eclipse,现在它似乎工作得很好。可能是环境问题导致eclipse使用worng本机库启动。

您使用的是哪个eclipse版本?我在2018-09(4.9),使用应用程序类或启动器类,我可以在Eclipse中运行和调试JavaFX项目,就像运行/调试Maven build一样。使用launcher,我还可以作为Java应用程序运行/调试。Im使用版本:2018-09(4.9.0)构建id:20180917-1800 Java开发者包+插件e(fx)clipse和Java 11补丁。我的问题似乎是,当我在eclipse中启动它时,它似乎使用了错误的本机或jdk库(我安装了jdk 8和11),但我将maven安装指向了11,并指出eclipse可以工作……我的意思是,您可以像往常一样设置主类扩展应用程序,或者,您也可以创建一个不扩展应用程序的启动器类,并将其设置为pom中的主类(以便以后可以在胖jar上运行)。不管怎样,从Eclipse来看,这两种方法对我都有效。确保JDK11路径正确,并且项目使用它。我安装了几个JDK,这不是问题所在。好的,我从系统中卸载了所有java实例和eclipse。重新安装了eclipse,现在它似乎工作得很好。可能是环境问题导致eclipse使用worng本机库启动。
[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)