【问题标题】:including an icon into a self-contained JavaFX application (.exe)在独立的 JavaFX 应用程序 (.exe) 中包含一个图标
【发布时间】:2012-11-20 22:10:16
【问题描述】:

遵循herehere 的说明。我正在使用 JDK 7u9NetBeans 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 标志在相应的 build.xml 文件中为 true:“使用默认包资源 [应用程序图标](将 package/windows/icotest.ico 添加到类路径以进行自定义)”

知道我可能做错了什么吗?谢谢。

【问题讨论】:

  • Oracle JavaFX 论坛上的这个人似乎有同样的问题。 forums.oracle.com/forums/…
  • 感谢您的链接 - 这已确认官方教程略有偏差,其他人也有同样的问题。

标签: installation icons native javafx-2


【解决方案1】:

找到答案here。看来,Oracle 网站上发布的指南目前与可用的实际部署方案不匹配。也就是说,在处理 NetBeans 时,ant 不知道当前目录被假定为您的根项目。正如相应论坛主题中所建议的那样 - 只需将包含 "package/windows/${projectname}.ico" 的目录添加到 ant 的类路径中,它就会获取相关资源,即使教程声称由于现有 (?) 将 '.' 添加到构建脚本中,这应该会自动发生。

【讨论】:

  • 如何在 Eclipse 中使用 maven 实现相同的目标??
  • 即使这是一个老帖子,但这种解决方案存在问题。如果您要构建多个项目怎么办?类路径应该适合所有项目吗?答案是不!如果您想让 Netbeans 内部 Ant 知道 build.xml 中给定的类路径或包含文件,则必须输入属性 build.sysclasspath=last,然后您将完全负责在 build.xml 中设置正确的类路径并包含文件。这在 2001 年已经在这里讨论过:netbeans.org/bugzilla/show_bug.cgi?id=9527
【解决方案2】:

经过反复试验并使用 XXL 答案,我发布了一种更清晰的方法,将您的自定义图标添加到 JavaFX 自包含中。顺便说一句,我正在使用 Netbeans 7.3 JDK 1.7u17 1. 首先在项目 src 目录中的文件夹(与项目同名)中创建一个名为 package 的文件夹。

2.在文件夹包下,创建文件夹windows,这是您放置自定义图标的地方。请确保.ico文件的名称与应用程序名称相同 注意:这可以通过创建一个新包在 netbeans 中轻松完成,但由于某种原因,netbeans 不允许您将新包命名为“包”

  1. 接下来,将包含 /package/windows/.ico 的目录添加到 Ant clathpath 属性
  2. 清理并构建您的项目,最终输出将与您的自定义图标类似

【讨论】:

  • 您先生是一位绅士和一位学者,我爱您,希望在我问同样的问题之前找到它。尽管如此,我会将这个答案与我自己的问题联系起来,这样任何不能正确表达问题的人都可能偶然发现这个雄辩而有效的解决方案。我向你致敬,祝你有个美好的一天。
  • 非常感谢。我对 Mac OS X 重复了这些步骤,将 mediaplayer/package/windows 更改为 mediaplayer/package/macosx,但仍然无法将图标放入包中。作为一种解决方法,默认图标包含在应用程序包的 resource 文件夹中,并且可以手动替换。
  • 对于 Mac OS X,您必须创建一个 .icns 文件(例如 MyApp.icns)。
  • 对于那些使用 E(fx)clipse 的人来说,当您右键单击 build.xml 并选择 Ant Build...(带有三个点)时,可以设置上述类路径。终于让我的图标出现了。另外,第一次点击 build.fxbuild 打开 Enable Verbose Build Mode 时可以打开调试
猜你喜欢
  • 2015-09-26
  • 1970-01-01
  • 1970-01-01
  • 2013-01-10
  • 2014-07-15
  • 1970-01-01
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多