gpt4 book ai didi

java - 通过 maven 的 OpenJDK 11 + OpenJFX 11 无法在 Eclipse 2018-09 + Java 11 补丁中运行

转载 作者:行者123 更新时间:2023-12-02 10:42:27 25 4
gpt4 key购买 nike

我目前正在将一些项目从 Oracle JDK8 + 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>

如您所见,我最初希望将 Log4J2 和 BAsic JavaFX 模块作为我的项目的依赖项。因为我在通过 Maven 启动 OpenJFX11 应用程序时已经遇到了问题,所以我偶然发现了这个线程: Different behaviour between Maven & Eclipse to launch a JavaFX 11 app因此,我的 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)

在我看来,这是因为缺少 native 库或方法,并且我的项目中没有直接的内容。但通常 javafx 依赖项应该自动添加系统 native (在我的例子中是 win,它出现在 Maven 依赖项下)。

我发现的只是这个线程,但我无法真正从中创建一个解决方案来解决我的问题: NoSuchMethodError: <init> in com.sun.glass.ui.win.WinApplication.staticScreen_getScreens

提前致谢

最佳答案

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

关于java - 通过 maven 的 OpenJDK 11 + OpenJFX 11 无法在 Eclipse 2018-09 + Java 11 补丁中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52838958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com