我有一个包含类的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>
非常感谢帮助。
答案 0 :(得分:0)
您没有在JS代码中定义app
变量。有关从JS运行和调用applet的示例,请参阅this tutorial。
实际执行此操作可能不是一个好主意,在纯JS中实现您想要做的事情要好得多。 JS引擎在过去几年中得到了相当快的速度,并且浏览器对java浏览器插件的要求更加严格,因为它已经发现/利用了许多安全漏洞。