1

我有一个引用 4 - 5 个外部 jar (lib) 的应用程序。但是当我在 netbeans 上运行我的应用程序时,netbeans 首先加载 jar 文件,然后出现我的应用程序场景。我正在尝试将 javafx 预加载器用于启动画面。但是预加载器场景也会在 jar 文件加载后加载。但是我想在我的预加载器场景显示期间加载 jar,即我希望加载 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 中的主项目的预加载器

4

1 回答 1

0

遵循使用 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"/>

download="progress"注意Preloader jar 上的一些重要标签,preloader-class以及update check="background".

download=lazy如果您愿意,您还可以在一些依赖 jar 上设置一个值(请参阅jnlp 规范)。如果您有预加载器,则可能不需要延迟下载,但它被定义为:

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

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

另请阅读 JavaFX 部署指南的性能提示部分。

于 2013-03-19T10:31:48.997 回答