【发布时间】:2013-09-03 09:01:33
【问题描述】:
我去年创建了一个 Java 小程序,用于从 Web 应用程序到本地运行的 Java 服务器的套接字连接。效果很好。
自从上次 java 更新(我猜是 7 r21)以来,我无法再访问 javascript 中的方法。现在,我将小程序简化为测试小程序(没有 doPriviligedAction 方法),但即使这样也不再起作用了。
目前的代码是这样的
import java.applet.*;
public class socketApplet extends Applet {
public void init() {
System.out.println("Applet initialisiert.");
}
public void start() {
System.out.println("Applet gestartet.");
}
public void paint() {
System.out.println("Applet aktualisiert.");
}
public void stop() {
System.out.println("Applet angehalten.");
}
public void destroy() {
System.out.println("Applet beendet.");
}
public String testApplet() {
System.out.println("Applet getestet.");
return "Yep, I'm the Applet.";
}
}
在更新之前,我可以像这样在 javascript 中访问 testApplet() 之类的方法:
document.socketApplet.testApplet();
小程序是自签名的,并嵌入了小程序 html 标记。它正在启动(Java 控制台正在打开并打印在 init、start 和 paint 方法中定义的调试消息),但我无法访问 testApplet() 方法。当小程序存在时,Javascript 中的响应是“未定义的”。
在阅读了一段时间(现在几天......)关于新的安全更改后,我添加了一个包含以下内容的 manifest.txt:
Main-Class: socketApplet
Permissions: all-permissions
Codebase: *
Trusted-Library: true
不管有没有 Trusted-Library 属性都没有运气。
我需要做什么才能再次启用 javascript 访问?
编辑: 实现:
<applet id="socketApplet" width="100" height="100" archive="../../socketApplet.jar" name="socketApplet" code="socketApplet" scriptable="true">
我正在最新版本的 Mac OS X 机器上使用最新版本的 Firefox 和 Safari 进行测试。
编辑2: 我正在像这样创建和签署 jar
编辑3: 好的,现在我的罐子工作了几次(不是连续工作),我得到了
在控制台中
但大多数时候它不起作用。重新启动浏览器,清除缓存,没有任何效果。现在(再次)要在另一台电脑上测试它。
编辑4: 好的,它正在使用 windows xp 和 java 32 位 7u25 的虚拟机上运行 - 在我的 64 位 mac 上,30 次尝试中只有 1 次。
【问题讨论】:
-
在什么版本的浏览器中进行测试?用于启动小程序的 HTML 是什么?
-
为了快速响应,我更新了主帖(见最后的编辑部分)
-
建议:1) 使小程序的宽度和高度不为零。网页中的 0x0 元素是自动可疑的,这可能会触发浏览器中更高级别的安全性,或者浏览器安装的任何工具来查找可疑活动。 2) 添加
scriptable="true"属性以指示小程序可能是从Javascript 调用的。 -
ty 但还是同样的问题
-
呵呵.. this Oracle page 在那些浏览器中工作吗?
标签: java javascript applet