如何在不双击 JNLP 的情况下使 java web start 自动启动

How to make java web start launch automatically without double click on the JNLP

我有一个 java 小程序应用程序,我们的客户可以通过我们的网站访问它。由于 Microsoft edge 和 chrome 停止支持 java 插件,我们将小程序转换为通过 JNLP 和 Java Web Start 启动,不幸的是,在这两种浏览器中都下载了 JNLP,客户应该加倍单击该文件以启动 Java Web Start。

我们的客户对这种行为感到非常失望,我正在努力寻找解决此问题的方法。

可能的解决方案

1) 更改浏览器中的行为,询问用户单击 JNLP link 时要做什么。然后用户可以 select Open with: Java web start launchersave file.

编辑 它在 Firefox 中工作,但不适用于 Chrome:查看相关错误报告 10877 and the open issues

2) 向用户提供一个脚本来执行
javaws https://example.com/your_application.jnlp

演示示例(应用程序link 摘自 Oracle 教程:Running a Java Web Start Application

javaws https://docs.oracle.com/javase/tutorialJWS/samples/deployment/NotepadJWSProject/Notepad.jnlp

这将打开一个简单的 Java 应用程序。

编辑 对于无所畏惧的人来说,有一个针对 Chrome.

的骇人听闻的解决方案
  1. 关闭 Chrome,并记住始终复制在后续步骤中更改的文件 ;-)
  2. 在 Chrome 库中找到 chrome.[so|dll] 字节 jnlp 并修补它们,例如jnl-
  3. 在您的 Chrome 用户配置文件目录中找到文件 Preferences 并将其修改为 ...

.

"download": {
    ...
    "extensions_to_open": "jnlp",
    ...
},

下次您单击 link 到 JNLP 文件时,它将自动打开(使用指定打开此文件类型的应用程序,通常是 javaws)。

属性 是在查看源代码后发现的 pref_names.cc. But Chrome treat the extension jnlp as dangerous 这就是我们需要修补库的原因。