You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用Java 17编译器编译调用JSObject.getWindow()的Java Applet?

关于Java 17编译Applet时JSObject.getWindow()方法缺失的问题

背景说明

  • Applet已不再被官方支持,遗留代码可通过IE11/Edge兼容模式或Webswing在任意浏览器运行
  • 我的Applet依赖netscape.javascript.JSObject实现与页面JavaScript的实时交互
  • Java 11可正常编译该代码,但Java 17中JSObject.getWindow()方法已被移除,编译时会报错

示例Applet代码

package your.package.name;

import javax.swing.JApplet;

public class SimpleApplet extends JApplet {
    private static final long serialVersionUID = 1L;

    public void init() {
        System.out.println("SimpleApplet.init()");
        netscape.javascript.JSObject win = netscape.javascript.JSObject.getWindow(this);
    }
    
    public void start() {
        System.out.println("SimpleApplet.start()");
    }
    
    public void destroy() {
        System.out.println("SimpleApplet.destroy()");
    }
}

编译命令与报错信息

编译命令

"C:\Program Files\Java\jdk-17\bin\javac.exe" "C:\Users\userId\your\package\name\SimpleApplet.java"

报错输出

SimpleApplet.java:5: warning: [removal] JApplet in javax.swing has been deprecated and marked for removal
public class SimpleApplet extends JApplet {
                                  ^
SimpleApplet.java:10: error: cannot find symbol
                netscape.javascript.JSObject win = netscape.javascript.JSObject.getWindow(this);
                                                                               ^
  symbol:   method getWindow(SimpleApplet)
  location: class JSObject
1 error
1 warning

已尝试的解决方法

将jaws.jar(与plugin.jar基本一致)加入类路径编译,命令如下:

"C:\Program Files\Java\jdk-17\bin\javac.exe" -cp "C:\Users\userId\jaws.jar" "C:\Users\userId\your\package\name\SimpleApplet.java"

但得到完全相同的错误,编译器似乎没有读取jaws.jar中的类实现。

补充信息

在Eclipse中,只要将jaws.jar置于Java 17类库之前(通过项目属性->Java构建路径->顺序与导出选项卡调整顺序),测试Applet不会报错;若调换顺序则会标记getWindow()为错误,因此推测javac也应该能实现类似的优先级调整效果。

问题

能否用Java 17编译该Applet?有没有办法强制编译器使用jaws.jar中的netscape.javascript.JSObject实现?


内容的提问来源于stack exchange,提问作者ForceRs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 01:16:06