【问题标题】:Applet's Packages attribute is null JRE7u21Applet 的 Packages 属性为空 JRE7u21
【发布时间】:2013-05-23 21:00:47
【问题描述】:

使用 JavaFX 小程序:

我使用 document.getElementById("APPLET_ID") 获得的 javascript 对象在 Windows 下没有 Packages 属性。 我在 Windows XP 上使用最新的 IE8、FF 和 Chrome 运行测试,但在 Windows 7 下出现同样的问题。

在带有 JRE 7u7 x64 的 Ubuntu 下,没有这个问题。

这是我的测试代码:

package test;

import netscape.javascript.JSObject;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class Main extends Application {

private JSObject js;
TextField tf;
@Override
public void start(Stage primaryStage) {
js = this.getHostServices().getWebContext();
HBox hb = new HBox();
Scene s = new Scene(hb, 400, 400);
tf = new TextField("MAIN");
primaryStage.setScene(s);
hb.getChildren().add(tf);
primaryStage.show();
runTest();
}

public static void main(String[] args) {
launch(args);
}

void runTest(){
new Thread(new Runnable() {

@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Platform.runLater(
new Runnable() {

@Override
public void run() {
tf.setText("" + js.eval("document.getElementById('applet_id').Packages == null"));

}
}
);
}
}).start();
}
}

在 Ubuntu JRE7u7x64 下显示“false”,在所有浏览器的 Windows 和 Ubuntu JRE7u21 下显示“true”。

JavaFX2 部署文档页面告诉我这样做是正确的,它看起来像一个 JRE 错误。你怎么看?

http://docs.oracle.com/javafx/2/deployment/javafx_javascript.htm.

在 Jira 上归档:https://javafx-jira.kenai.com/browse/RT-30732

【问题讨论】:

  • 最好在the JavaFX issue tracker提出问题
  • 在 Ubuntu 下使用 JRE7u21x64 测试:Packages 属性也为空。拜托,这是一个严重的问题,如果这是一个全新的错误,不推荐使用包的访问(没有看到任何线索),或者已知的错误,有人能注意到我吗?提前致谢。
  • 这个可怕页面上 JRE7u21 更改的唯一线索:docs.oracle.com/javase/tutorial/deployment/applet/… 更改是当混合特权代码和沙箱代码时,应提示警告(请参阅docs.oracle.com/javase/7/docs/technotes/guides/jweb/…)。在我所有的测试中,没有出现警告。看起来我缺少访问包的权限,即使在我的 JNLP 文件中请求全权限安全策略时也是如此。
  • 我将在此处停止发帖,仅更新 JavaFX Jira 错误报告。如有问题,我会发布我的问题的答案。

标签: java javascript javafx-2 packages


【解决方案1】:

看起来这是自 7u21 以来的预期变化:http://www.oracle.com/technetwork/java/javase/7u21-relnotes-1932873.html 此 Packages 属性不再起作用。

所以如果你需要从你的 JS 回调到你的 applet,你必须直接访问它的方法。

并使用 Trusted-Library 清单属性来避免警告。

但是在使用 Trusted-Library 时,您无法为所欲为。例如,如果您使用 Axis2 Web 服务。

因此,您必须使用 Trusted-Only 清单属性来执行此操作。但这禁止你从 JS 调用方法。

简单的解决方法: 让一个线程定期检查 JS 回调队列并处理它们。这是痛苦的、可怕的 POJO,但它确实有效。

所以对于甲骨文: 谢谢

  • 用于更新在线文档
  • 宣布在次要版本中进行的重大更改
  • 让网络集成变得如此简单。
  • 在 u25 中添加其他安全检查导致 20 秒灰屏延迟

您了解 Adob​​e 吗?听说他们有很好的东西...我很生气。

【讨论】:

    猜你喜欢
    • 2019-07-30
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多