如何从本地超链接调用 Java 程序?

How to call a Java program from a hyperlink locally?

我有一个html文件,里面有links,我想知道是否有办法使用那些links来调用java生成另一个 html 文件的程序 ?

像这样:

<Html>
<body>
Some text
<A Href=[somehow point to a java .class file to run]>My Link</A>
More text
</Body>
</Html>

我知道如何使用Java生成html,我这里想问的是如何给这个本地javaclass传递一个参数,这样它可以用输入生成 html 文件 ?

因此,如果调用 Java 程序:MyHtmlGen.java

那么 class 将是 MyHtmlGen.class

然后如果我从命令行运行它,它会像这样:

> java MyHtmlGen my_input

但我不知道如何把它变成上面的html link?

那是不可能的。 link <a> 将针对 href 属性中设置的 URI 向服务器发出 GET 请求,它并不意味着执行特定代码段。如果您想在单击 link 时执行代码,请使用 JavaScript,但请注意 JavaScript 无法启动 JVM 实例并且 运行 您的 [=16] =]申请.

另一方面,也许您应该查看 Applet 或 JavaFX 并将 java 应用程序嵌入到您的页面中。或者您可以向服务器提交一个操作,然后在服务器端您可以启动 JVM 并执行您的 Java 代码。

您可以使用 WebStart 从浏览器交互启动 Java 应用程序。

linked 文档中标题为:"Running a Java Web Start Application From a Browser" 的部分提供了一个您可以尝试的演示。 Java 应用程序的 link 提供为:

<a href="/some/path/Notepad.jnlp">Launch Notepad Application</a>

该文档指出,当您单击 link:

Java Web Start software loads and runs the application based on instructions in the JNLP file.

不是我在安装了 Oracle Java 8u40 的 OS X 10.9 上的 Safari 7.1 上获得的行为。相反,我只是下载了 jnlp 文件,然后双击下载的文件以 运行 应用程序。我 认为 在某些浏览器上,Oracle 可能会为浏览器提供一个插件,它能够自动启动 jnlp 引用的应用程序,而无需用户也双击下载的 jnlp 文件。 可能如果使用Java deployment toolkit而不是直接a hreflink,用户体验可能更无缝一点。

注意: 浏览器制造商已逐步停止支持此类插件技术,因此自动 运行 引用应用程序的体验甚至能力可能因人而异你和你的用户。此外,允许此类插件在浏览器环境中 运行 会增加用户浏览器的安全攻击漏洞面。 WebStart 也是一种快速使用和支持您的用户的棘手技术。因此,出于这些原因,我通常不建议使用 WebStart 作为部署解决方案。