相关疑难解决方法(0)

缺少Maven Shade JavaFX运行时组件

我正在尝试使用maven依赖项创建一个JFX11自包含jar.从我所做的研究来看,似乎最好的方法是通过maven shade插件.但是,当我运行它时,我收到此错误:

错误:缺少JavaFX运行时组件,并且需要运行此应用程序

我不明白为什么会这样.我搞砸了什么?有一个更好的方法吗?我也用同样的消息尝试了maven程序集插件.

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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>Application</groupId>
    <artifactId>Main</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>SpaceRunner</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <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.8.0</version>
                <configuration>
                    <release>10</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>Application.Main</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>
                                Application.Main
                            </mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>Application.Main</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution> …
Run Code Online (Sandbox Code Playgroud)

java javafx maven javafx-11

22
推荐指数
1
解决办法
7407
查看次数

单个Maven模块中的多个Java 9模块?

我有一个有趣的担忧.我习惯了多模块Maven项目.现在我正在调查如何做同样的事情,但也使用Jigsaw.是的,每个Maven模块只能有一个Jigsaw模块吗?在IDE中,我无法在同一个Maven模块中创建第二个.

那么,到目前为止,是否有任何约定或解决方法如何组合模块的两面?

java maven java-platform-module-system java-9

6
推荐指数
1
解决办法
1736
查看次数

如何修复“错误:缺少 JavaFX 运行时组件,需要运行此应用程序”

我的JavaFx应用程序从源代码运行得很好,但是当我编译为单个 jar 文件时,出现错误:

错误:缺少 JavaFX 运行时组件,运行此应用程序需要这些组件。

我正在Maven用作我的存储库管理器,并且我的 Maven 安装成功。

注意:在我的Intellij构建工件中,我可以看到Intellij包含JavaFx及其所有库

javafx-11

5
推荐指数
2
解决办法
1万
查看次数

Maven-shade-plugin 检测到某些类文件存在于两个或多个 JAR 中

我正在尝试使用maven-shade-plugin但收到警告:

javafx-controls-18.0.1-win.jar、javafx-graphics-18.0.1-win.jar、javafx-media-18.0.1-win.jar、javafx-web-18.0.1-win.jar 定义 1 个重叠资源:

  • META-INF/substrate/config/resourcebundles javafx-graphics-18.0.1-win.jar、javafx-media-18.0.1-win.jar、javafx-web-18.0.1-win.jar 定义 2 个重叠资源:
  • META-INF/substrate/config/jniconfig-x86_64-linux.json
  • META-INF/substrate/config/reflectionconfig-x86_64-linux.json javafx-base-18.0.1-win.jar,javafx-controls-18.0.1-win.jar,javafx-graphics-18.0.1-win.jar定义 1 个重叠资源:
  • META-INF/substrate/config/reflectionconfig.json maven-shade-plugin 检测到某些类文件存在于两个或多个 JAR 中。发生这种情况时,只会将该类的一个版本复制到 uber jar 中。通常这没有什么害处,您可以跳过这些警告,否则尝试根据 mvn dependency:tree -Ddetail=true 和上述输出手动排除工件。请参阅 https://maven.apache.org/plugins/maven-shade-plugin/

此警告可能会发生变化(可能来自我的行为)。

我试图用这个来修复它,但它不起作用:

<filters>
    <filter>
        <artifact>*:*</artifact>
        <excludes>
           <exclude>META-INF/*</exclude>
        </excludes>
    </filter>
</filters>
Run Code Online (Sandbox Code Playgroud)

由于 Shadow-jar 由于错误而无法启动,我开始尝试修复此警告:

错误:缺少 JavaFX 运行时组件,并且需要运行该应用程序

请告诉我如何修复此错误并运行shade-jar?

我的pom.xml

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.test</groupId>
    <artifactId>TEST</artifactId>
    <version>1.0</version>
    <name>TEST</name>

    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <junit.version>5.8.2</junit.version>
        <javafx.version>18.0.1</javafx.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>${javafx.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-web</artifactId>
            <version>${javafx.version}</version>
        </dependency>
        <dependency> …
Run Code Online (Sandbox Code Playgroud)

java javafx maven maven-shade-plugin

5
推荐指数
1
解决办法
2545
查看次数