我有一个带有类的Java jar。我需要能够在这些类之一中调用方法。它必须在本地客户端上,而不是对服务器的Ajax调用而不是Web服务。我的html页面旁边有.jar,我需要能够从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>


第二次尝试-Applet的中间出现一个拼图,上面写着“不支持该插件”,在控制台中我出现此错误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>


非常感谢您的帮助。

最佳答案

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

实际执行此操作可能不是一个好主意,而以纯JS实现要执行的操作会更好。在过去的几年中,JS引擎变得越来越快,并且由于发现/开发了许多安全漏洞,浏览器对Java浏览器插件的要求也越来越严格。

10-07 18:57
查看更多