使用JWS JNLP为JavaFX应用程序创建桌面图标

使用JWS JNLP为JavaFX应用程序创建桌面图标,java,javafx,java-web-start,Java,Javafx,Java Web Start,我正在尝试为我的应用程序显示一个自定义的destop图标,但由于某种原因,无论我做什么,都会显示相同的默认java图标。我已经尝试了我能想到的一切,并将我的jnlp文件与其他图标正常的文件进行了比较。根据我所读到的一切,以下内容应该可以很好地工作。但当然,它没有: <information> <title>MikesApp</title> <vendor>Mike</vendor> <homepage hr

我正在尝试为我的应用程序显示一个自定义的destop图标,但由于某种原因,无论我做什么,都会显示相同的默认java图标。我已经尝试了我能想到的一切,并将我的jnlp文件与其他图标正常的文件进行了比较。根据我所读到的一切,以下内容应该可以很好地工作。但当然,它没有:

<information>
    <title>MikesApp</title>
    <vendor>Mike</vendor>
    <homepage href="http://www.mikesapp.com/"/>
    <description>Mikes App.</description>
    <icon kind="shortcut" href="res/icon64x64.png" width="64" height="64"/>
    <offline-allowed/>
    <shortcut>
        <desktop/>
    </shortcut>
</information>

米凯萨普
迈克
Mikes应用程序。

任何想法都将不胜感激。

我恐怕没有具体的答案,但这是一个用JavaFX编写的开源应用程序,它有一个自定义的桌面图标


如果您还没有这样做,那么检查MaiTai的JNLP代码可能会给您一些提示。

如果您有权访问JavaFX in Action book,那么在JavaFX in Action book中有一个如何执行此操作的示例。您需要确保res/icon64x64.png文件实际上可以从应用程序所在的任何站点(相对于JNLP的位置)下载。请尝试直接在浏览器中加载它,以确保其可用/有效。

我将按顺序尝试以下操作:


  • 创建一个32x32大小的图标,并将其添加为一个附加的
    ,我想您的问题在于缺少CODEBASE属性。请参见一个工作片段:

    <?xml version="1.0"?>
    <jnlp spec="1.5+" 
          codebase="http://www.sweethome3d.com/" 
          href="SweetHome3D.jnlp">
      <information>
        <title>Sweet Home 3D</title>
        <vendor>eTeks</vendor>
        <homepage href="http://www.sweethome3d.com/"/>
        <description>Sweet Home 3D</description>
        <description kind="short">Arrange the furniture of your house</description>
        <icon href="SweetHome3DIcon.gif"/>
        <icon kind="splash" href="SweetHome3DSplashScreen.jpg"/>
        <offline-allowed/>
        <shortcut online="false">
          <desktop/>
          <menu submenu="eTeks Sweet Home 3D"/>
        </shortcut>
        <association extensions="sh3d sh3l sh3f sh3t sh3p" 
                     mime-type="application/SweetHome3D"/>
      </information>
    
    
    甜蜜家园3D
    埃特克斯
    甜蜜家园3D
    整理你家的家具
    
    我们也遇到了同样的问题。最初它工作得很好,但随着时间的推移(一些Java更新?)它停止了工作。当我着手进行故障排除时,我发现即使javaws发送了它支持gzip的消息,我们的gzip响应也没有得到处理。我关闭了这些图标的gzip,它再次正常工作。

    谢谢Eric。我试了你的建议,但到目前为止还没有什么乐趣。我创建了快捷方式图标,尝试了gif、png和jpg格式,并使用了绝对和相对URI。你的那个看起来和我的一样。最糟糕的是知道解决方案不可避免地会变得非常简单。JNLP的东西让你感到有点痛苦,但我最终认为它很酷。目前,我的图标挫折给我的JNLP兴奋蒙上了一层阴影。我将在这个周末进行另一次尝试,看看我是否能找到答案。我做的另一件可能会有所不同的事情是创建一个256x256 png作为默认值,系统可以重新缩放。如果你发布你的整个JNLP,如果你愿意,我可以看一看。也许(默认)图标已经被缓存,所以你可能需要在看到新的自定义图标之前刷新现金?(我不知道javaws是如何处理图标的,但它让我想起了favicon/浏览器缓存的挫折…)。要清除缓存:启动javaws(“Java应用程序缓存查看器”),通过编辑|首选项打开“Java控制面板”,按“删除文件…”(在“常规”选项卡上)。是的,您也可以执行“javaws-卸载myfile.jnlp”以清除任何缓存位。
    <?xml version="1.0"?>
    <jnlp spec="1.5+" 
          codebase="http://www.sweethome3d.com/" 
          href="SweetHome3D.jnlp">
      <information>
        <title>Sweet Home 3D</title>
        <vendor>eTeks</vendor>
        <homepage href="http://www.sweethome3d.com/"/>
        <description>Sweet Home 3D</description>
        <description kind="short">Arrange the furniture of your house</description>
        <icon href="SweetHome3DIcon.gif"/>
        <icon kind="splash" href="SweetHome3DSplashScreen.jpg"/>
        <offline-allowed/>
        <shortcut online="false">
          <desktop/>
          <menu submenu="eTeks Sweet Home 3D"/>
        </shortcut>
        <association extensions="sh3d sh3l sh3f sh3t sh3p" 
                     mime-type="application/SweetHome3D"/>
      </information>