当我试图通过Java Web Start部署JavaFX桌面应用程序时,特别是当它决定下载JAR时,我得到了不一致的行为。我的代码签名了。
所需要的:
>
桌面应用程序,100%脱机工作,但在有internet连接时检查更新。
如果发现更新,询问用户是否要下载。如果是,更新并运行。如果没有,则运行缓存版本。
桌面图标需要制作。
目前正在计划发生的事情:
发生的事情是计划外的:
>
当internet断开时,如果从.jnlp文件运行,应用程序根本无法工作。控制台指示代码库不可用。根据我的说法,它应该检测互联网的丢失,并从缓存中工作,但它没有。
当脱机运行至少一次(通过快捷方式运行带有-offline参数的。jnlp文件),并且互联网再次连接并重新启动时,web start要求用户确认软件现在需要联机。如果用户拒绝,则消息指示所需文件丢失。程序现在将永远不会再次启动,除非用internet重新运行,并表明它可能会联机。然后重新下载所有依赖项的整个应用程序。
即使在离线时,有时也会发生同样的情况。脱机快捷方式工作一次并运行软件,控制台然后指示一些jar已经无效。当重新发射时,会出现与上述相同的问题。
如果第一次运行并安装并启动了该软件,之后互联网迅速断开,并重新启动。软件将不能脱机工作,这表明并没有下载所有的资源。看到所有的JAR都被设置为热切下载,检查更新被设置为“超时”,我看不出有什么理由这样做。
更奇怪的是,Linux和Windows之间的行为似乎有差异。虽然不完美,但它在Linux上似乎更加一致,离线快捷方式从不检查更新。而在windows上,有时需要重新下载,然后更新。
如果当前的部署不是如此不可预测,那么当前的逻辑似乎是,要更新应用程序,用户需要从。jnlp文件而不是从快捷方式运行软件。
不管怎样,抛开长长的描述不谈,有人能在下面给出的。jnlp文件中发现什么错误吗?我真正想要的是实现在线和离线工作的快捷方式,在线时检查更新,但在没有对JAR进行更改时不会丢失应用程序的缓存版本,也不会不必要地重新下载软件。
<?xml version="1.0" encoding="utf-8"?>
<!-- JNLP File for example-->
<jnlp
spec="7.0+" codebase="http://www.example.co.za/downloads/example"
xmlns:jfx="http://javafx.com"
href="Example.jnlp">
<information>
<title>Example</title>
<vendor>My Company</vendor>
<homepage href="http://www.example.co.za/products" />
<description>Example is an example application</description>
<icon href="../shared/example_icon.png"/>
<icon kind="splash" href="../shared/example_splash.png" />
<icon kind="shortcut" href="../shared/example_icon.png" />
<shortcut online="false" install="true">
<desktop/>
<menu submenu="My Company"/>
</shortcut>
<offline-allowed/> </information> <security> <all-permissions/> </security> <resources>
<jfx:javafx-runtime version="8.0+" href="http://javadl.sun.com/webapps/download/GetFile/javafx-latest/windows-i586/javafx2.jnlp"/>
</resources>
<update check="timeout" policy="prompt-update"/>
<resources>
<j2se version="1.8+" java-vm-args="-Xms512m"/>
<jar href="Example.jar" download="eager"/>
<jar href="Dependency-1.jar" download="eager"/>
<jar href="Dependency-2.jar" download="eager"/>
<jar href="Dependency-3.jar" download="eager"/>
...
</resources>
<application-desc main-class="ExampleMain">
<applet-desc width="1024" height="768" main-class="com.javafx.main.NoJavaFXFallback" name="Example Application" >
<param name="requiredFXVersion" value="8.0+"/>
</applet-desc>
<jfx:javafx-desc width="1024" height="768" main-class="ExampleMain" name="Example Application" />
<application-desc/>
</jnlp>
应为
问题内容: 我创建了一个Java桌面应用程序(使用Swing),现在尝试通过使用JNLP从网络启动它使其工作。当我从终端启动应用程序时,它运行良好,但是一旦从JNLP启动它,它就不会关闭。我必须每次都手动终止该进程。 我读到如果将其用作默认关闭操作可能会出现问题,但事实并非如此。它使用(隐式)。另外,释放所有对象后,我将显式调用: 我猜想在关闭应用程序时可能会引发异常,但是我找不到从JNLP开始获
我正在开发一个使用网络摄像头的JavaFX应用程序。为了能够访问camera,我被迫使用opencv库和javacv(使用本机opencv共享库)。现在,我希望本机DLL以某种方式安装在用户机器上,以便java可以使用它们。我阅读了整个ant tasks reference for javafx并找到了一个示例,它解释了如何将本机系统库添加到应用程序包中以使其工作。我正在使用netbeans构建j
解决办法是: 使用路径/somefxml.fxml。 使用FXMLLoader.Load(getClass().GetClassLoader().GetResource(“SomeFXml.fxml”)); 使用FXMLLoader.Load(getClass().GetClassLoader().GetResource(“packageName/somefxml.fxml”)); 检查文件是否存
问题内容: 我有一个非常大的程序,当前正在使用SWT。该程序可以在Windows,Mac和Linux上运行,它是一个包含许多元素的大型桌面应用程序。现在SWT有点老了,我想切换到Swing或JavaFX。我想听听您对三件事的想法。 我主要关心的是桌面GUI应用程序会更好吗?(我在网上看过,很多人认为JavaFX与Swing一样好,但是除了简单的见解大战之外,我没有看到很多有效的论点)。它必须在Wi
问题内容: 直到最近,我还能够使用 Java web start 在 Firefox中 启动/打开 JNLP 文件。 不知道发生了什么事,突然突然启动了 JNLP 文件,出现了启动屏幕,显示 Java正在启动… ,然后什么也没有发生。甚至浏览器和 javacpl.cpl 小程序中的 Java控制台 也不会打开。 __ 尝试了所有可能性:删除了所有较旧的版本并安装了最新的JRE(Java版本“ 1.
处理命令时发生未知的服务器端错误。原始错误:无法使用默认证书签名。原始错误生成ENOTDIR 我正在尝试使用Appium桌面应用程序启动一个android应用程序。Appium服务器显示以下错误日志;