升级到JRE 1.7.0_13后,applet类名称不正确

时间:2013-02-05 12:00:58

标签: java oracle firefox xul

我有一个Firefox扩展,加载扩展本身附带的Java jar。我曾经使用window.java DOM对象,所以我可以做

var loader = java.net.URLClassLoader.newInstance(urls);
const myClassRef = java.lang.Class.forName("com.me.program", true, loader);
var myJavaObject = myClassRef.newInstance();
//use LiveConnect to directly call stuff on my object now.

在我的扩展程序的JS代码中,其中url是一个包含jar文件的file:/// uri的数组。

当Firefox删除window.java时,我开始在标记中嵌入applet以获取对java的引用:

<html:embed id ="appletID" type="application/x-java-applet" 
    code="java.applet.Applet"  pluginspage="http://java.com/download/"  MAYSCRIPT="true" width="0" height="0" />

....

var ref = document.getElementById("appletID");
window.java = ref.Packages.java;

在更新到7u13之后,这不再起作用,可能是由于不再支持embed标记中的code属性。我该怎么做才能解决这个问题?

我已经尝试直接使用指向我的applet的archive=属性,但问题是因为我在Firefox扩展中所有内容都变为chrome:// uris,而JRE仍然无法处理,似乎不支持file:// uris(我收到一条通用权限被拒绝的消息)。

1 个答案:

答案 0 :(得分:0)

https://bugzilla.mozilla.org/show_bug.cgi?id=748343的评论74和75中提出并回答了这个问题。

简而言之,最新的Java插件不允许code="java.applet.Applet"。似乎没有办法让插件访问您的扩展中的jar文件。解决方法是将jar文件放在可公开访问的HTTP站点上; jar文件只需要包含一些简单的小程序,如public class Applet extends java.applet.Applet { }。这是从Firefox bugzilla评论中复制的叠加HTML:

<html:div name="appletDiv">
    <html:embed id ="appletID" type="application/x-java-applet" 
        archive="https://mysite.com/applet.jar" code="Applet" 
        pluginspage="http://java.com/download/"  
        MAYSCRIPT="true" width="0" height="0" />     
</html:div>