【问题标题】:How to set custom icon for javafx native package icon on Windows如何在 Windows 上为 javafx 本机包图标设置自定义图标
【发布时间】:2013-03-30 14:15:28
【问题描述】:

我试图在创建 javafx 打包的本机捆绑时尝试 exe 文件的图标。 我尝试将图标添加到 pom.xml 中,但直到它不适合我,因为它提供了默认图标
使用包含 Pom.xml 的 Intellij IDEA IDE,通过 command = mvn jfx:build-native 创建包 这是我的pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>com.zenjava</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>1.5</version>
            <configuration>

                <mainClass>com.demoApp.testapp.testApplication</mainClass>

                <!-- only required if signing the jar file -->
                <keyStoreAlias>example-user</keyStoreAlias>
                <keyStorePassword>example-password</keyStorePassword>
                <permissions>
                    <permission>all-permissions</permission>
                </permissions>
                <icon>${basedir}/src/main/resources/images/logoIcon.ico</icon>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>

    </plugins>
</build>

我在 pom.xml ${basedir}/src/main/resources/images/logoIcon.ico 中添加了一个图标路径 这将在本机包执行时运行,但对我来说不起作用

还有其他方法吗? 请提出建议。


我在 pom.xml 中使用 ant 尝试了 fx 标签,这是我在 pom.xml 中的更改

<properties>

<javafx.tools.ant.jar>${env.JAVA_HOME}\lib\ant-javafx.jar</javafx.tools.ant.jar> </properties>


<plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.6</version>
                <executions>
                    <execution>
                        <id>create-launcher-jar</id>
                        <phase>package</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <target xmlns:fx="javafx:com.sun.javafx.tools.ant">
                                <taskdef
                                        uri="javafx:com.sun.javafx.tools.ant"
                                        resource="com/sun/javafx/tools/ant/antlib.xml"
                                        classpath="${javafx.tools.ant.jar}"/>
                                <fx:application id="fxApp"
                                                name="${project.name}"
                                                mainClass="com.precisionhawk.flightplanner.FlightPlannerApp"/>
                                <fx:jar destfile="${project.build.directory}/${project.build.finalName}-launcher">
                                    <fx:application refid="fxApp"/>
                                    <fx:fileset dir="${project.build.directory}/classes"/>
                                </fx:jar>
                                <attachartifact file="${project.build.directory}/${project.build.finalName}-launcher.jar"
                                                classifier="launcher"/>
                                <fx:deploy>
                                    <fx:info>
                                        <fx:icon href="${basedir}/src/main/deploy/logoIcon.ico"></fx:icon>
                                    </fx:info>

                                </fx:deploy>
                            </target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

但它不会成功..

【问题讨论】:

  • 您的代码中缺少 windows 文件夹的名称:&lt;fx:icon href="${basedir}/src/main/deploy/logoIcon.ico"&gt;&lt;/fx:icon&gt;

标签: icons javafx-2 native exe pom.xml


【解决方案1】:

您需要在构建原生应用时查看日志记录。这将告诉您安装程序在哪里查找图标文件和名称。对于默认的 Windows 本机应用程序,它在 ./package/windows/'appname'.ico 中查找 不记得“appname”来自哪里,但只要在构建时查看日志,它就会告诉你。 (我使用从我的 pom 中调用的 Ant 目标)

【讨论】:

  • 在构建原生应用程序时记录日志:[INFO] 构建原生安装程序 [DEBUG] 使用 'C:\Projects\DemoApp\src\main\deploy\logoIcon.ico' 中的图标文件获取路径正确,但包图标设置为默认图标
  • 创建应用程序包:C:\dev\repositories\profile_planner\profileplanner\target\dist\bundles 中的 Facewizz 使用自定义包资源 [应用程序图标](从 package/windows/Facewizz.ico 类加载路径)是我得到的。似乎您的日志记录来自 Maven 插件。您从原始构建工具中进行的抽象越多,失败的机会就越大。
  • 您使用的是什么版本的 Java?我突然注意到,当我使用 7.0.17 构建我的应用程序时,图标也没有设置。它在 7.0.12-ea 版本中,所以这可能是一个错误,将在错误修复版本中修复。
  • 是的,使用 java7.0.17 博客提供了要添加到 build.xml 文件中的详细信息,因为我的项目不包含任何 build.xml 文件,因为我使用的是 maven,所以项目包含一个 pom.xml,其中它在标签 上给出错误
【解决方案2】:

我只是在使用 Zonsky 的出色 javafx-maven-plugin 时遇到了同样的问题。从您也在使用的 1.5 版开始,src/main/deploy 目录将被添加到类路径中。您可以在此处添加您要使用的图标,它将在原生构建器的类路径中可用!

我在那里添加了 src/main/deploy/package/windows/myapp.ico,它终于奏效了 :)

为你:

  1. 创建src/main/deploy/package/windows/ 文件夹
  2. 添加名称为${project.build.finalName}.ico 的图标
  3. 运行mvn jfx:build-native

我没有广泛使用它 - 只是让它工作并想分享。所以如果你想使用不同名称的图标,我不知道怎么做。至少现在还没有。 config部分中的&lt;icon&gt;...&lt;/icon&gt;部分似乎是针对webstart的,所以我一直没有使用它。 希望你能成功!

【讨论】:

    【解决方案3】:
         you can do this:
          `<plugin>
                <groupId>com.zenjava</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>8.8.3</version>
                <configuration>
                    <vendor>YourCompany</vendor>
                    <mainClass>com.alan344.MapperGenApplication</mainClass>
                    <appName>mybatis-friend</appName>
                    <bundleArguments>
                        <icon>${project.basedir}/src/main/resources/image/icon.ico</icon>
                    </bundleArguments>
                </configuration>
            </plugin>`
    

    【讨论】:

    猜你喜欢
    • 2018-01-03
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 2013-03-05
    • 2013-03-30
    • 1970-01-01
    相关资源
    最近更新 更多