【问题标题】:Java applet: run native code from browser?Java小程序:从浏览器运行本机代码?
【发布时间】:2011-06-02 14:38:35
【问题描述】:

是否仍然可以通过浏览器中的 Java 小程序在 Windows 下启动“本机”应用程序?网页上的IE“单击此处启动notepad.exe”。我能找到的最新参考是 2002 年。我想知道这个模型/概念是否不再受支持。

【问题讨论】:

  • 您是否尝试过您找到的方法?成功了吗?
  • 它太旧了,有些软件包不再可用。构建它超出了我的能力范围。
  • 这是一个 IE 解决方案:codereflex.net/how-to-run-exe-on-webpage --> 不过我需要一些浏览器中性的东西。
  • Java当然可以。。现在我只需要记住如何写一个小程序。。

标签: java applet


【解决方案1】:

是的,但必须对小程序进行签名。

Signed applets 将提示用户授予他们权限。一旦给定,小程序就拥有与机器上运行的任何应用程序相同的权利,包括启动本机应用程序(或链接本机库,我过去必须这样做)的能力。

【讨论】:

  • 这很好用。我想多了。自签名确实会产生一个弹出窗口,需要解释“不,真的 - 你可以相信我”,但这是可行的。
  • 有没有一种很好的方法来捆绑本机库以便将其下载到用户的硬盘上?调用 System.loadLibrary() 时应该使用什么路径?
  • 我相信你可以将它包含在你的 jar 文件中,但我没有尝试过(我们让小程序动态下载它,以便它可以获取 dll 的更新)。
【解决方案2】:

..是否仍然可以通过浏览器中的 java 小程序在 windows 下启动“本机”应用程序?

当然。正如其他回复中提到的,签名(且受信任)的小程序可以使用 Runtime.exec(String) 来启动本机应用程序。

从 Java 1.6 开始,Dekstop.getDesktop.open(File) 的实现变得更加简单,它将使用操作系统注册为该文件类型消费者的任何应用程序打开选定的 File

从 Sun 的 Plugin2 架构(Sun/Oracle JRE 中的 1.6.0_10+)开始,使用 JNLP API 的 @ 987654325@。这是我的demo. of the BasicService

【讨论】:

  • 不知道桌面的东西(还没有机会使用 1.6) 你能在 exe 上执行 Desktop.open() 方法来启动它吗?这在未签名的小程序中是否有效,还是仍然需要签名?
  • @Herms:需要信任小程序才能使用Desktop 类的方法。
  • BasisService 仍然不提供启动本机应用程序,是吗?还是您使用file: URL 来运行本地应用程序?
  • @Paŭlo Ebermann:您说得对,但BasicService 可用于启动基于 JWS 的桌面应用程序。
【解决方案3】:

这样做的可移植方式是创建一个signed Applet

【讨论】:

    猜你喜欢
    • 2013-03-02
    • 2015-12-21
    • 2017-05-29
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 2019-02-04
    • 1970-01-01
    相关资源
    最近更新 更多