我有一个带有类的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浏览器插件的要求也越来越严格。