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

时间:2010-01-17 09:24:35

标签: java javafx java-web-start

我正在尝试为我的应用程序显示自定义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>

非常感谢任何想法。

5 个答案:

答案 0 :(得分:5)

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

  1. 创建一个32x32大小的图标,并将其添加为附加<icon kind="shortcut"...spec表示该大小用于桌面图标。
  2. 使用64x64图标作为“默认”。例如,您的新<icon>元素将是:

    <icon href="res/icon64x64.png" width="64" height="64"/>
    <icon kind="shortcut" href="res/icon32x32.png" width="32" height="32"/>
    <icon kind="shortcut" href="res/icon64x64.png" width="64" height="64"/>
    
  3. 请记住,您的图片是相对于codebase xml元素

  4. 中的jnlp属性进行访问的
  5. 如果这些都不起作用,欢迎您将您的JNLP与one of mine that works进行比较。

  6. 我意识到这个JNLP的东西是一种痛苦。希望其中一个为你工作。

答案 1 :(得分:3)

我认为你的案例中的问题是缺少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>

答案 2 :(得分:3)

我们遇到了同样的问题。它最初工作得很好然后随着时间的推移(一些Java更新?)它停止工作。当我开始排除故障时,我发现即使javaws发送它是gzip能力的,我们的gzip响应也没有得到处理。我为这些图标关闭了gzip,它再次运行良好。

答案 3 :(得分:1)

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

如果你还没有这样做,也许查看MaiTai的JNLP代码会给你一些指示。

答案 4 :(得分:1)

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