Mavenで正しく動作するJavaFXアプリケーションがあります。
mvn compile
mvn exec:Java # Launches the GUI
これはUbuntuで、openjdk-11-jdk
、maven
、openjfx
Ubuntuパッケージを使用しています。
Eclipseからこのアプリケーションをコンパイルして実行したいIDE(EclipseはSudo snap install --classic Eclipse
でインストールされています。)m2e(Maven to Eclipse)プラグインをインストールし、プロジェクトをFile -> Import -> Maven -> Existing Maven Project
でインポートしました。 JavaFXプロジェクトでは、m2eプラグインはEclipseでMavenのpom.xml
からプロジェクトを構成するために必要なすべてのことを行います。残念ながら、私の場合、何かが欠けています。型チェックが正しく機能し、javafx.*
クラスを見つけますが、アプリケーションを実行しようとすると、コンソールの次のエラーメッセージ:
Error: JavaFX runtime components are missing, and are required to run this application
回避策は、アプリケーションをMavenアプリケーション(Run -> Run As -> Maven Build -> target=exec:Java
)として実行することですが、あまり便利でなく、遅いため、アプリケーションをJavaとして直接実行する方法を探しています。 = Eclipseのアプリケーション。
私は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);
}
}
Mavenプロジェクトがあるので、使用しているmavenプラグインの目標を使用し、(_m2e
_を介して)Eclipseを取得してこれを実行できますが、これらの目標と目的を指定する必要があります実行する構成。
この HelloFX サンプルがあるとします。
あなたのポンは次のようになります:
_<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>12</release>
</configuration>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.3</version>
<configuration>
<mainClass>org.openjfx.hellofx.App</mainClass>
</configuration>
</plugin>
</plugins>
</build>
_
ここでは、_javafx-maven-plugin
_の代わりに _exec-maven-plugin
_ を使用していますが、使用することもできます。前者はモジュールパスへのJavaFXモジュールの追加を適切に処理しますが、後者はモジュールをまったく使用しません。
端末を使用している場合は、JDK 12を設定して実行します。
_mvn clean javafx:run
_
期待どおりに動作します。
ただし、これをターミナルからではなくEclipseから実行したいので、_Run -> Run Configurations... -> Maven Build
_から新しいMavenビルド構成を作成できます。
_clean javafx:run
_を追加し、JREが適切に設定されていることを確認します(たとえば、JDK 12)。適用を押してダイアログを閉じます。
これで、ツールバーまたはコンテキストメニューから_Run as
_緑のアイコンをクリックできます。ダイアログが表示され、単純に_Maven Build
_オプションを選択できます。
OK
を押すと、期待どおりに目標が実行されます。
実行構成を作成していない場合、Mavenビルドを選択すると、構成を作成して必要な目標を指定するように求められます。つまり、Eclipseは、実行ボタンをクリックしたときに、pomで実行したい目標のうち、実行したいものを推測しません。
または、ドロップダウンアイコンを押して、カスタム構成を示すダイアログを開くこともできます。
hellofx
を押すと、指定した目標が実行されます。
最後に、Mavenのようなビルドツールの利点がなくても、プロジェクトを_Java Application
_として実行できます。VM引数を追加する必要があります(つまり、ダウンロードする必要があります answer のように、最初にJavaFX SDKを使用します。次に、同じドロップダウンボタンからこの他の構成(私の場合は_hellofx2
_)を実行できます。
このすべてが詳細に文書化されていることに注意してください here 。
Linux用のOpenJDKには、JAVAFXフレームワークが付属していません。ダウンロードしてインストールする必要があります。
Sudo apt-get install openjfx
インストール後、次の手順を使用します。
Set the SDK first
ステップ1:
GOTO File -> Project Structure -> Modules -> Dependency >> + [on left-side of window] click + sign
ステップ2 :
Run >> Edit Configurations
ステップ3:VM configに以下のパラメーターを追加します:
--module-path /path/to/JavaFX/lib --add-modules=javafx.controls
これは重複している可能性があります。これを試しましたか
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.8.3</version>
<configuration>
<mainClass>your.main.class.which.extends.javafx.Application</mainClass>
</configuration>
</plugin>
ここに提供: EclipseでMavenを使用したJavaFXアプリケーション
また、そのためのドキュメントがあり、おそらくJava 11。
https://openjfx.io/openjfx-docs/
ドキュメントから提供されているOpenJFXリリースを以下に示します。
https://gluonhq.com/products/javafx/
また、
https://openjfx.io/openjfx-docs/images/ide/Eclipse/modular/maven/Eclipse05.png
Mavenによるビルドの素晴らしいイメージです。