2011-06-02 81 views
1

是否仍有可能通过浏览器中的java applet在windows下启动“原生”应用程序? IE“点击这里开始notepad.exe”在网页上。我能找到的最新参考文献是2002年的。我想知道这个模型/概念是否不再支持。Java applet:从浏览器运行本机代码?

+2

你尝试了你发现的方法吗?它工作? – Mat 2011-06-02 14:44:55

+0

它太旧了,以至于一些软件包不再可用。让它构建超越了我。 – ethrbunny 2011-06-02 14:46:28

+0

这里是一个IE解决方案:http://codereflex.net/how-to-run-exe-on-webpage/ - >我需要一些浏览器中立,虽然。 – ethrbunny 2011-06-02 14:50:53

回答

9

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

Signed applets会提示用户给他们许可。一旦得到,小程序就具有与机器上运行的任何应用程序相同的权限,包括启动本机应用程序(或链接本机库,我过去必须执行的操作)。

+0

这工作正常。我正在推翻它。自我签名确实需要解释一个弹出窗口,“不是真的 - 你可以信任我”,但这是可行的。 – ethrbunny 2011-06-03 11:41:55

+0

是否有一种很好的方法来捆绑本地库,以便将它下载到用户的硬盘上?当你调用System.loadLibrary()时应该使用什么路径? – 2011-12-07 04:18:19

+0

我相信你可以将它包含在你的jar文件中,但我还没有尝试过(我们有applet在飞行中下载它,所以它可以获取DLL的更新)。 – Herms 2011-12-08 20:28:02

2

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

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

从Java 1.6开始,随着Dekstop.getDesktop.open(File)的实现变得更加简单,该操作将打开选定的File,该操作将OS注册为该文件类型的使用者。

Sun的Plugin2架构(1.6.0_10 +在Sun/Oracle的JRE)的提供了一个更通用的方法为(沙箱)小程序嵌入到网页中,使用JNLP API的BasicService。这里是我的demo. of the BasicService

+0

不知道桌面的东西(有没有机会使用1.6)你可以做一个EXE的Desktop.open()方法启动它?这是否在未签名的小程序中工作,还是需要签名? – Herms 2011-06-02 15:56:20

+0

@Herms:一个applet需要被信任使用'Desktop'类的方法。 – 2011-06-02 15:59:35

+0

BasisService仍然不提供启动本机应用程序,是吗?或者你使用'file:'URL来运行本地应用程序? – 2011-06-02 18:19:47