如何从Javascript运行.jar方法

时间:2015-06-25 16:31:07

标签: javascript java html5 google-chrome jar

我有一个包含类的java jar。我需要能够在其中一个类中调用方法。它必须在本地客户端,而不是ajax调用服务器而不是webservices。我的.har就在我的html页面旁边,我需要能够从javascript / html进行java方法调用。

我只需要一种方式来调用java方法,我试过的这些方法甚至可能不是最好的方法。只是寻求一些帮助。

我已经尝试了多种方式,但没有占上风。也许我做错了,chrome v42 and up.

不再支持<applet> .jar

中的

Java

import java.applet.Applet;


public class MethodInvocation extends Applet{

    public String helloWorld() {
        System.out.println("Hello World!");
        return "Hello JavaScript, I came from Java";
    }

}

首次尝试 - 没有工作获取chrome消息

    <applet archive="JavaLibrary.jar" code="MethodInvocation.class" name="myApplet" width="1" height="1"></applet>

    <script language="javascript">
        var javaMessage = document.myApplet.helloWorld();
        console.log("Java Message Received: " + javaMessage);
    </script>

第二次尝试 - 小程序在其中间显示拼图块说&#34;插件不受支持&#34;并在控制台中我发现此错误Uncaught ReferenceError: app is not defined

<object type="application/x-java-applet" height="300" width="550">
    <param name="id" value="app">
    <param name="code" value="MethodInvocation">
    <param name="archive" value="JavaLibrary.jar">
</object>

<script language="javascript">
    app.helloWorld();
</script>

非常感谢帮助。

1 个答案:

答案 0 :(得分:0)

您没有在JS代码中定义app变量。有关从JS运行和调用applet的示例,请参阅this tutorial

实际执行此操作可能不是一个好主意,在纯JS中实现您想要做的事情要好得多。 JS引擎在过去几年中得到了相当快的速度,并且浏览器对java浏览器插件的要求更加严格,因为它已经发现/利用了许多安全漏洞。