49150


簡易なアプリです。最新技術を使っている、Java 11 + Java FX + Maven + Spring の「Hello, world」アプリです。

[code]

    package com.example;
    
    import com.example.beans.TestSpringBean;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import javafx.stage.Stage;
    import javafx.scene.Scene;
    import javafx.scene.control.Label;
    
    
    public class EntryPoint extends javafx.application.Application {
    
      public static void main (String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("ApplicationContext.xml");
        TestSpringBean testSpringBean = (TestSpringBean) applicationContext.getBean("testSpringBean");
        System.out.println(testSpringBean.getTestString());
        launch();
      }
    
      @Override
      public void start(Stage stage) {
        Label label = new Label("Hello, JavaFX11!");
        Scene scene = new Scene(label, 640, 480);
        stage.setScene(scene);
        stage.show();
      }
    }
    
[/code]

IntelIJ IDEAには、mavenのcompileをしてみると、特に問題ありません：

[![画像の説明をここに入力](https://i.stack.imgur.com/uCevY.png)](https://i.stack.imgur.com/uCevY.png)

`maven-
package`も、正常です。ですが構成されたファイルを実行してみると、「JavaFXランタイム・コンポーネントが不足しており、このアプリケーションの実行に必要です」というエラーが出ます：

[![画像の説明をここに入力](https://i.stack.imgur.com/91aSq.png)](https://i.stack.imgur.com/91aSq.png)

POM.xml:

[code]

    <?xml version="1.0" encoding="UTF-8"?>
    <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>com.example</groupId>
      <artifactId>OTCJA</artifactId>
      <version>1.0-SNAPSHOT</version>
    
      <dependencies>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>5.1.0.RELEASE</version>
        </dependency>
    
        <dependency>
          <groupId>org.openjfx</groupId>
          <artifactId>javafx-controls</artifactId>
          <version>11</version>
        </dependency>
      </dependencies>
    
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
              <release>11</release>
            </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>com.example.EntryPoint</mainClass>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <id>copy-dependencies</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                  <outputDirectory>
                    ${project.build.directory}/libs
                  </outputDirectory>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
              <archive>
                <manifest>
                  <addClasspath>true</addClasspath>
                  <classpathPrefix>libs/</classpathPrefix>
                  <mainClass>com.example.EntryPoint</mainClass>
                </manifest>
              </archive>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </project>
    
[/code]

## 環境

  * OS: Windows 10
  * IntelIJ IDEA バージョン：2018.2
  * ベンター：確か、[http://jdk.java.net](http://jdk.java.net/11/)です

[![画像の説明をここに入力](https://i.stack.imgur.com/N4BJu.png)](https://i.stack.imgur.com/N4BJu.png)


CC BY-SA 4.0
2018-10-06T08:11:02.827
49019
2018-10-12T07:14:07.517
2018-10-10T13:36:35.300
16876
16876
question
java maven javafx
Maven + Java SDK 11 + Java FX: JavaFXランタイム・コンポーネントが不足しており、このアプリケーションの実行に必要です


実行の際に[ここ](https://openjfx.io/openjfx-docs/#install-
javafx)に記載されているオプション（以下）を指定していないことが原因だと思います。

[code]

    --module-path $PATH_TO_FX --add-modules=javafx.controls
    
[/code]

Run > Edit Configurations > JAR Applications > (作成したJar) を選択し、「VM
Options」に上記を入力して実行すれば、おそらく動くと思います（試していませんが...）。`$PATH_TO_FX`は`javafx-
sdk-11/lib`へのパスです。


CC BY-SA 4.0
2018-10-10T15:15:15.157
49150
2018-10-10T15:32:32.513
2018-10-10T15:32:32.513
21092
21092
49019
answer


javafxのjarはjfxrt.jarだったと思います。きっとここへのパスが通ってないんですね。


CC BY-SA 4.0
2018-10-12T07:14:07.517
49222
2018-10-12T07:14:07.517
29798
49019
answer