Cba总决赛在哪看:JavaFX构建与阴影 位置是必需的 它在哪里看

它仍然没有找到 FXML 位置。我搞砸了输出目录和目录以及进入 FXMLLoader 的 URL 无济于事:

Parent root = FXMLLoader.load(getCl().getResource("fxml/ui.fxml"));

这个应用程序在哪里寻找资源?

目录:

In:

项目 / src / main / java / mypackage / Main.java

项目 / src / main / resources / fxml / ui.fxml

Out:

项目 / 目标 / AppName-1.0-SNAPSHOT.jar

项目 / 目标 / AppName-1.0-SNAPSHOT-shaded.jar

项目 / 目标 / 类 / myPackage / Main.cl

项目 / 目标 / fxml / ui.fxml

我的 POM:

<dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>11.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-base</artifactId>
            <version>11.0.2</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <outputDirectory>${basedir}/target</outputDirectory>
                    <resources>
                        <resource>
                            <directory>src/main/resources</directory>
                            <filtering>true</filtering>
                            <includes>
                                <include>**/*.fxml</include>
                            </includes>
                        </resource>
                    </resources>
                </configuration>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <!-- here the phase you need -->
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>11</release>  <!--or <release>10</release>-->
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainCl>com.potatospy.NewMain</mainCl>
                                </transformer>
                            </transformers>
                            <artifactSet>
                                <excludes>
                                    <exclude>clworlds:clworlds</exclude>
                                    <exclude>junit:junit</exclude>
                                    <exclude>jmock:*</exclude>
                                    <exclude>*:xml-a</exclude>
                                    <exclude>org.apache.maven:lib:tests</exclude>
                                    <exclude>log4j:log4j:jar:</exclude>
                                </excludes>
                            </artifactSet>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
2

对于初学者来说,第一个问题是你的资源:

父根 = FXMLLoader.load (getCl ().getResource ("fxml / ui.fxml"));

如果使用getResource,则必须使用绝对路径:

Parent root = FXMLLoader.load(getCl().getResource("/fxml/ui.fxml"));

StackOverflow 有很多关于这个问题的问题,这个answer是一个非常有效的参考。

maven-shade-plugin

假设您的com.potatospy.NewMain类是不扩展Applicationlauncher cl,并且您的源(在src/main/java/下)是:

com / potatospy / NewMain.java

com / potatospy / Main.java

com / potatospy / UIController.java

和您的资源(在src/main/resources下)是:

fxml / ui.fxml

如果你想做一个阴影 / 脂肪罐,并且你不要修改默认的 maven-resources-plugin,这将只使用maven-compile-pluginmaven-shade-plugin插件从你的 pom:

mvn clean package

然后你可以运行你的应用程序:

java -jar target/AppName-1.0-SNAPSHOT.jar

请注意,将应用默认资源插件,并将您的文件添加到target/cles

target / cles / com / potatospy / NewMain.cl

目标 / 类 / com / potatospy / Main.cl

target / cles / com / potatospy / UIController.cl

目标 / 类 / fxml / ui.fxml

maven-resource-plugin

但是,如果您添加资源插件,就像您在 pom 中所做的那样,当您运行它时,您会注意到您的文件被添加到:

target / cles / com / potatospy / NewMain.cl

目标 / 类 / com / potatospy / Main.cl

target / cles / com / potatospy / UIController.cl

目标 / fxml / ui.fxml

当包完成时,fxml 文件甚至没有添加到 jar 中!

如果您需要包含资源插件,则需要如下所示:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <outputDirectory>${basedir}/target/cles</outputDirectory>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                   <include>**/*.fxml</include>
                </includes>
            </resource>
        </resources>
    </configuration>
    <executions>
        <execution>
            <id>copy-resources</id>
            <!-- here the phase you need -->
            <phase>package</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
        </execution>
    </executions>
</plugin>

请注意,我已经将cles添加到输出目录(因此资源包含在其中)。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(20)
倾辛chinesemoneyboy:如何简化辛指数的对数(simplify logarithmic expression)
上一篇
Cba季后赛门票在哪里买:Laravel在哪里或在哪里
下一篇

相关推荐

  • android 视频编码深入理解MediaCodec API

    Android 视频编码是指将原始视频数据经过压缩编码后,生成新的视频数据,以便减少视频文件的体积,提高传输速度,以及更好地在 Android 设备上播放。…

    2023-01-13 10:58:18
    0 17 99
  • cv小敢:如何利用CV小敢提升职业技能?

    cv小敢(Computer Vision Tiny-YOLO)是一种轻量级的物体检测算法,它可以在资源受限的设备上运行,如嵌入式设备、智能手机等。它是基于YOLO(You Only Look Once)算法的一个变体,由Joseph Redmon和Ali Farhadi开发,旨在提高深度学习模型的性能,同时减少模型的大小和计算复杂度。…

    2023-02-09 13:08:59
    0 11 42
  • coremail论客邮箱Coremail论客邮箱

    Coremail论客邮箱是一款专业的企业邮箱服务,可以满足企业对安全、可靠性和高效性的要求。它拥有强大的安全性能,可以提供多种安全保护,包括防止邮件被窃取、拦截恶意邮件、防止跨站脚本攻击等。此外,它还支持多种企业级功能,如组织架构管理、收发邮件管理、文件共享管理、联系人管理等,可以帮助企业提高工作效率,提升企业形象。…

    2023-02-25 04:36:55
    0 62 86
  • linux 编译静态库:```ar cr libtest.a *.o```4. 完成!

    我们要创建一个源文件,比如:mylib.c,内容如下:#include…

    2023-03-19 08:46:39
    0 74 48
  • canvas下载安装:Unleash the Power of Canvas to Create Amazing Visuals

    Canvas是一种HTML5技术,可以在网页上创建和绘制2D图形。它是一个JavaScript API,可以使用JavaScript代码来绘制图形,并且可以添加各种效果,如阴影,渐变,动画等。…

    2023-03-08 00:48:14
    0 45 24
  • class定位:The Benefits of Using Class Selectors for Element Locati

    示例示例class定位是一种CSS布局技术,用于指定HTML元素的位置,可以使元素放置在页面的任何位置。代码示例:…

    2023-03-06 07:16:44
    0 67 24
  • cvt加速技巧:如何使用CVT加速技巧提升网络性能?

    cvt加速技巧是一种用于提升计算机程序运行性能的技术。它可以帮助程序员更有效地利用处理器的资源,从而提高程序的性能。cvt加速技巧的主要原理是:在程序运行时,将处理器的资源(如内存、寄存器、流水线等)分解成小块,然后将这些小块重新组合,使其可以更有效地执行程序代码。…

    2023-01-21 04:33:16
    0 45 77
  • security code怎么填保护您的数据和隐私

    示例示例code是一种防止自动提交表单的安全措施,通常会在表单中显示一个图片,用户需要输入图片中显示的字符。以下是一个简单的 code代码示例:…

    2023-03-20 09:31:54
    0 81 37

发表评论

登录 后才能评论

评论列表(25条)