使用LiveConnect的Javascript到Java通信不起作用
Javascript to Java communication using LiveConnect not working
我一直在做一个项目,该项目需要Java和JavaScript之间双向通信。我已经成功地让它在OS X的所有浏览器下运行,但我现在面临的挑战是让它在任何浏览器下都能在Windows上运行。目前它根本不起作用。
我只是想知道,为了让JavaScript与Java通信,我是否需要做一些特别的事情?
我的小程序代码如下:
<applet id='theApplet'
code="com/company/MyApplet.class"
archive="SMyApplet.jar"
height="50" width="900"
mayscript="true" scriptable="yes">
Your browser is ignoring the applet tag.
</applet>
加载小程序后,我会尝试调用它上的函数,如下所示:
alert("Call some java:" + theApplet.testFunc());
在firebug控制台中,我得到以下错误:
theApplet.testFunc is not a function
我可以确认这在IE中也不起作用。
当页面加载时,我打开了java控制台,我可以看到小程序已经成功加载并准备好接受调用。
如有任何帮助,我们将不胜感激!
干杯
更新:这是暴露我试图调用的公共api的精简java代码。
package com.company;
import com.google.gson.Gson;
import java.applet.*;
import java.io.*;
import java.net.*;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.*;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.*;
import netscape.javascript.*;
public class MyApplet extends Applet implements Runnable
{
public void init()
{
JSON = new Gson();
isReadyVar = 0;
workThread = null;
}
public void start()
{
}
public void run()
{
System.out.println("Done");
}
public void stop()
{
}
public void destroy()
{
}
/* Public API */
public int testFunc()
{
return 200;
}
}
更新[SOLVED]:
我弄清楚问题到底出在哪里了。原来我使用的Gson库没有签名;但我自己的罐子是。windows上的浏览器要求对所有库进行签名;所以我把Gson和我的java文件打包在一起;签了字就解决了问题!感谢大家的帮助!
我发现了问题的确切原因。原来我使用的Gson库没有签名;但我自己的罐子是。windows上的浏览器要求对所有库进行签名;所以我把Gson和我的java文件打包在一起;签了字就解决了问题!感谢大家的帮助!
alert("Call some java:" + document.getElementbyId("theApplet").testFunc());
确保将testFunc()
方法声明为public
访问。
如果不起作用,请将小程序代码作为SSCCE发布。
BTW
错误
code="com/company/MyApplet.class"
正确
code="com.company.MyApplet"
BTW 2
错误
..scriptable="yes">
正确
..scriptable="true">
由于applet
元素已被弃用,我使用以下代码,它至少在Firefox中有效:
<object id="MyApplet" classid="java:com.example.myapplet"
codetype="application/java" codebase="bin/" height="10" width="10"
</object>
相关文章:
- HTML5视图内部Java桌面GUI,JavaScript通信
- Javascript到Java通过套接字编程进行通信
- Java Applicaton和在浏览器中运行的JavaScript可以相互通信吗?
- 如何从 JavaScript 到 Java 应用程序进行通信
- Java和NodeJS如何在后端进行通信
- 如何在没有Flash/Java的情况下实现浏览器到浏览器的通信(允许服务器作为桥梁)
- 客户端Java服务器与Javascript之间的套接字通信
- Android Phonegap应用程序中的Javascript到Java通信
- 使用Websockets在两个JAVA web应用程序之间进行通信
- JSP与java通信,动态显示html代码
- 寻找JavaScript和Java之间的简单通信方式
- 寻找一些让Java与网站通信的信息
- 在java struts企业应用中集成远程通信
- 在同一主机上的node.js和java之间进行通信的最佳方式
- Phonegap Cordova 2.2插件开发,不能在Java和JavaScript之间进行通信
- 如何在Android WebView中实现JavaScript-Java通信同步?
- Java和JavaScript套接字通信
- 浏览器与java组件之间的通信
- Javascript到Java Applet的通信
- 使用LiveConnect的Javascript到Java通信不起作用