【问题标题】:Java Webstart stops before launching applicationJava Webstart 在启动应用程序之前停止
【发布时间】:2015-08-24 09:44:04
【问题描述】:

我们的 webstart 应用程序(不是小程序)遇到了奇怪的启动问题。

启动应用程序会显示应用程序启动画面,但 javaws 进程会在没有任何错误消息的情况下立即终止在对话框、Java 控制台或日志文件中显示。似乎 javaws 在实际启动实际应用程序之前就停止了。 用户尝试从桌面快捷方式还是从网页启动应用程序都没有关系。 在没有 webstart 的本地计算机上使用 javaw 运行时,相同的应用程序可以正常工作。

应用程序是签名应用程序(真正的证书,不是自签名的),用户在桌面上有应用程序的快捷方式。 jnlp 定义应用程序可以脱机运行,并且使用 timeout -option 完成更新检查。 服务器端正在使用 jnl-servlet 来提供正确的 jar 版本。

此问题并非每次都发生,但如果启动一次像这样失败,很可能(我们观察到大约 90% 的确定性)后续启动也会失败。 重新启动计算机似乎没有帮助。该问题仅限于少数计算机。大多数用户 (98%) 没有这个问题。

所有出现故障的系统都运行 Windows 7 Pro。 Java 版本可能会有所不同,但一个示例是 64 位 Java 1.8.0_60、Win7Pro、64 位 intel-i3 处理器。

出现此类问题的原因可能是什么?非常感谢您对解决问题的任何帮助。尤其是似乎没有任何错误消息可用于帮助查明问题。

【问题讨论】:

  • 我们面临同样的问题。看起来像 bug,因为 8.60 发行说明没有说明 JNLP 的变化。
  • 您是否打开了 Java 控制台?它出现了吗?里面有什么吗?您也可以以某种方式将 java 控制台输出重定向到文件——如果它短暂显示然后消失,这可能会很有用。
  • 控制台已打开,但没有显示任何消息。此外,我尝试启用对文件的日志记录,但也没有任何痕迹(但可能有错误的日志记录配置到文件)。
  • 我们遇到了同样的行为。您是否能够确定问题所在?

标签: java java-web-start jnlp


【解决方案1】:

我遇到了 1.8.0_60 的问题,即在 JNLP 文件的 doctype 中按 url 引用 DTD 验证似乎是强制的。 Webstart 尝试下载 DTD,但在没有 Internet 连接的情况下,应用程序无法启动。这在 1.8.0_51 中不是问题。

作为一种解决方法,我们从 JNLP 中删除了 doctype。

<!DOCTYPE jnlp PUBLIC "-//Sun Microsystems, Inc//DTD JNLP Descriptor 6.0//EN" "http://java.sun.com/dtd/JNLP-6.0.dtd">

【讨论】:

  • 在我们的例子中,计算机的网络连接正常,但无论如何都值得一试。
  • 我们尝试从 jnlp 中删除 doctype 定义,但仍然面临同样的问题。有问题的是,我们无法确定每次或至少经常重现问题的步骤。到目前为止,问题似乎是随机发生的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
  • 2014-10-13
  • 2023-03-31
  • 1970-01-01
相关资源
最近更新 更多