在javafx中的启动画面期间加载jar文件

时间:2013-03-19 04:48:35

标签: javafx splash-screen jarsigner

我有一个应用程序,它引用了4 - 5个外部jar(lib)。但是当我在netbeans上运行我的应用程序时,netbeans首先加载jar文件,然后出现我的应用程序场景。我正在尝试使用javafx预加载器以及启动画面。但是加载jar文件后也会加载预加载器场景。 但我希望在我的预加载器场景中显示加载罐子,即我希望将罐子加载到我的启动画面,然后我的主应用程序场景应该开始。请帮忙

我的JNLP文件

    <?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0" xmlns:jfx="http://javafx.com" href="Black.jnlp">
  <information>
    <title>Black</title>
    <vendor>RATTAN</vendor>
    <description>Sample JavaFX 2.0 application.</description>
    <offline-allowed/>
  </information>
  <resources os="Windows">
    <jfx:javafx-runtime version="2.0+" href="http://javadl.sun.com/webapps/download/GetFile/javafx-latest/windows-i586/javafx2.jnlp"/>
  </resources>
  <resources>
    <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
    <jar href="Black.jar" size="2407915" download="eager" />
    <jar href="lib/commons-codec-1.6.jar" size="253494" download="eager" />
    <jar href="lib/commons-io-1.3.2.jar" size="95657" download="eager" />
    <jar href="lib/commons-lang-2.0.jar" size="179419" download="eager" />
    <jar href="lib/newlink.jar" size="6161" download="eager" />
    <jar href="lib/scribe-1.3.0.jar" size="74544" download="eager" />
  </resources>
<security>
  <all-permissions/>
</security>
  <applet-desc  width="800" height="600" main-class="com.javafx.main.NoJavaFXFallback"  name="Black" />
  <jfx:javafx-desc  width="800" height="600" main-class="test.Test"  name="Black" />
  <update check="always"/>
</jnlp>

我使用了另一个预加载器项目,我已将其配置为netbeans中主项目的预加载器

1 个答案:

答案 0 :(得分:0)

按照Packaging an Application with a Preloader上的文档。

检查生成的jnlp文件,它应包含与此类似的值:

<resources>
  <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
  <jar href="lib/FirstPreloader.jar" size="2801" download="progress" />
  <jar href="AnimatedCircles.jar" size="13729" download="always" />
</resources>
<applet-desc  width="800" height="600"
    main-class="com.javafx.main.NoJavaFXFallback"  name="AnimatedCircles" />
<jfx:javafx-desc  width="800" height="600"
  main-class="animatedcircles.AnimatedCircles"  name="AnimatedCircles"  
  preloader-class="firstpreloader.FirstPreloader"/>
<update check="background"/>

请注意预加载器jar上的一些重要标记download="progress"preloader-classupdate check="background"

如果您愿意,还可以在某些相关的罐子上设置download=lazy值(请参阅jnlp spec)。如果您有预加载器,可能不需要进行延迟下载,但定义为:

  

这意味着在启动应用程序之前,不必将资源下载到客户端系统上。

注意一旦打开更新检查并且正在使用延迟下载,在开发期间准确调试应用程序可能非常困难,因为在执行时,应用程序可能使用缓存版本的代码而不是最新版本的代码。所以这些交换机最好只用于最终部署。

另请阅读JavaFX部署指南的Performance Tips部分。