【发布时间】:2019-12-01 05:19:12
【问题描述】:
我有一个可以与 Maven 一起正常运行的 JavaFX 应用程序:
mvn compile
mvn exec:java # Launches the GUI
这是在 Ubuntu 上,使用 openjdk-11-jdk、maven 和 openjfx Ubuntu 软件包。
我想从 Eclipse IDE 编译和运行这个应用程序(安装了 sudo snap install --classic eclipse 的 Eclipse)。我安装了 m2e (Maven to Eclipse) 插件,并使用 File -> Import -> Maven -> Existing Maven Project 导入了项目。对于非 JavaFX 项目,m2e 插件可以从 Maven 的 pom.xml 完成在 Eclipse 中配置项目所需的一切。不幸的是,就我而言,缺少一些东西:类型检查正常工作并找到 javafx.* 类,但是当我尝试运行应用程序时,我在控制台中收到以下错误消息:
Error: JavaFX runtime components are missing, and are required to run this application
一种解决方法是将应用程序作为 Maven 应用程序 (Run -> Run As -> Maven Build -> target=exec:java) 运行,但我发现它不太方便且速度较慢,因此我正在寻找一种方法让应用程序在 Eclipse 中直接作为 Java 应用程序运行.
我找到了手动配置 Eclipse 的方法(作为答案发布在下面),但我仍然想知道是否有更好的方法,可以让 Maven + m2e 完全完成这项工作,即尽可能多地从pom.xml 让一切都在 Eclipse 中“正常工作”。
这个问题可以在一个极简的例子上重现,这个pom.xml:
<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>
<groupId>jfxpl</groupId>
<artifactId>jfxpl</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11.0.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.2</version>
<configuration>
<mainClass>App</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<configuration>
<mainClass>App</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
以及任何使用 JavaFX 的应用程序,例如:
import javafx.application.Application;
import javafx.stage.Stage;
public class App extends Application {
@Override
public void start(Stage stage) throws Exception {
System.out.println("Start!"); // Or real JavaFX stuff here obviously
}
public static void main(String[] args) {
Application.launch(args);
}
}
【问题讨论】:
-
参见openjfx.io/openjfx-docs/#IDE-Eclipse,Maven 部分
-
谢谢,这确实有帮助,但并没有完全回答使用 Eclipse + Maven 的意义(以及没有让 m2e 自动配置所有内容的相关挫败感)。
-
你试过e(fx)clipse插件吗?我将它与 Java 8 一起使用,它为创建新的 JavaFX 项目、运行 JavaFX 应用程序、FXML 支持、CSS 支持等提供了良好的支持。
-
显示您的
pom.xml。是this the same issue?另见this m2e mailing list post。 -
JavaFX 在 Java 8 之后不受支持
标签: java eclipse maven ubuntu javafx