Включая значок в автономное приложение JavaFX (.exe)

Далее следуют инструкции здесь и здесь. Я использую JDK 7u9 и NetBeans 7.2.1. Я создал весь путь относительно корневой папки проекта (C:\Users\Administrator\Desktop\icotest\package\windows\icotest.ico). Я попробовал оба с размером 48x48 и 256x256. Вот обзор дерева для моего проекта под названием icotest:

│   build.xml
│   manifest.mf
│
├───build
│   │   built-jar.properties
│   │
│   ├───classes
│   │   └───icotest
│   │           Main$1.class
│   │           Main.class
│   │
│   ├───empty
│   └───generated-sources
│       └───ap-source-output
├───dist
│   │   icotest.html
│   │   icotest.jar
│   │   icotest.jnlp
│   │
│   └───web-files
│           dtjava.js
│           error.png
│           get_java.png
│           get_javafx.png
│           javafx-chrome.png
│           javafx-loading-100x100.gif
│           javafx-loading-25x25.gif
│           upgrade_java.png
│           upgrade_javafx.png
│
├───nbproject
│   │   build-impl.xml
│   │   genfiles.properties
│   │   jfx-impl.xml
│   │   project.properties
│   │   project.xml
│   │
│   ├───configs
│   │       Run_as_WebStart.properties
│   │       Run_in_Browser.properties
│   │
│   └───private
│       │   private.properties
│       │   private.xml
│       │
│       └───configs
│               Run_as_WebStart.properties
│               Run_in_Browser.properties
│
├───package
│   └───windows
│           icotest.ico
│
└───src
    └───icotest
            Main.java

Вот что выглядит build.xml:

<target name="-post-jfx-deploy">
    <fx:deploy verbose="true" nativeBundles="exe" outdir="${basedir}/${dist.dir}" outfile="${application.title}">
        <fx:application name="${application.title}" mainClass="${javafx.main.class}"/>
        <fx:resources>
            <fx:fileset dir="${basedir}/${dist.dir}" includes="*.jar"/>
            <fx:fileset dir="${basedir}/${dist.dir}" includes="lib/*.jar"/>
        </fx:resources>
        <fx:info title="${application.title}" vendor="${application.vendor}"/>
        <fx:preferences shortcut="true"/>
    </fx:deploy>
</target>

Независимо от того, что я делаю, я все еще получаю это сообщение во время процесса dist build (который активирует ISS) с установленным флагом debug true в соответствующем файле build.xml: "Использование ресурса пакета по умолчанию [значок приложения] (добавьте пакет /windows/icotest.ico в путь класса для настройки)"

Любая идея, что я могу делать неправильно? Спасибо.

Ответ 1

Нашел ответ здесь. Похоже, что рекомендации, размещенные на веб-сайте Oracle, в настоящее время не соответствуют реальным сценариям развертывания. А именно, при работе с NetBeans ant не знает о текущем каталоге, который, как предполагается, является вашим корневым проектом. Как было предложено в соответствующей ветке форума, просто добавьте каталог, содержащий каталог "package/windows/${projectname}.ico" в ant, и он подберет соответствующий ресурс, даже хотя в учебнике утверждается, что это должно произойти автоматически из-за существующего (?) добавления '.' к сборке script.

todo

Ответ 2

После проб и ошибок и использования ответа XXL я опубликую более четкий способ добавления вашего пользовательского значка в автономный JavaFX. Кстати, я использую Netbeans 7.3 JDK 1.7u17 1. Начните с создания папки с именем package внутри папки (с тем же именем, что и ваш проект), найденным в каталоге проекта src.

win 2. под пакетом папок создайте окна папок, и именно там вы разместите свой значок icon.please, убедитесь, что имя вашего файла .ico совпадает с именем приложения enter image description here  Примечание. Это можно было бы легко сделать в netbeans, создав новый пакет, но по какой-то причине netbeans не позволяет вам называть пакет нового пакета, enter image description here

  1. Затем добавьте каталог, содержащий /package/windows/.ico, в Ant свойства clathpath enter image description here
  2. Очистите и создайте свой проект, и конечный результат будет выглядеть примерно так, используя ваш собственный значок enter image description here