1

当尝试使用 Open Web start 调用 JNLP 应用程序时,我得到了这个错误堆栈跟踪。

net.adoptopenjdk.icedteaweb.shaded.mozilla.javascript.EcmaError:ReferenceError:“java”未定义。(internal#105) 在 net.adoptopenjdk.icedteaweb.shaded.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3557) 在 net.adoptopenjdk.icedteaweb.shaded.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3535) ) 在 net.adoptopenjdk.icedteaweb.shaded.mozilla.javascript.ScriptRuntime.name(ScriptRuntime.java:1652) 在 net.adoptopenjdk.icedteaweb.shaded.mozilla.javascript.ScriptRuntime.name(ScriptRuntime.java:1652) 在 net.adoptopenjdk.icedteaweb.shaded.mozilla.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:3620)。采用openjdk.icedteaweb.shaded.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:3413) at script.dnsResolve(internal:105) at script.getResolvedIp( http://uhic.ca.edu/toodeepregression3.pac:569 )在 script.FindProxyForURL(http://uhic.ca.edu/toodeepregression3.pac:62

第 569 行的脚本是.. internalResolvedIp = dnsResolve(host)

    if (
            host
            ) {
        // If the user has typed an IP address in the address bar, take it
        // as it is.
        var isIpV4Address = /^(\d+.){3}\d+$/;
        var isIpV6Address = /^\[(.*)\]$/;

        if (
                isIpV4Address.test(host)
                ) {
            internalResolvedIp = host;
        } else {
            var matches = host.match(isIpV6Address);

            if (
                    matches && matches.length === 2
                    ) {
                // Get the address between the square brackets
                internalResolvedIp = matches[1];
            } else if (
                    isDnsResolvingAllowed
                    ) {
                ****internalResolvedIp = dnsResolve(host);****
            }
        }
    }

我不确定这个错误是什么。我也查看了 Open web start 日志。我在 itnernet 世界中进行了广泛的搜索,但我几乎没有因为这个错误而得到任何点击。

4

1 回答 1

0

您显然已经遇到了错误,我也在尝试在 OWS 中为我​​的团队解决问题。自从 OWS 推出以来,我们已经被这个问题困扰了 9 个月。我可以向你解释我到目前为止的发现。事实上,我将经过消毒的 pac-proy 发送给 OWS 团队以确定问题,但他们将其发回给我。所以这就是问题所在。OWS 在其源代码中有一个 javascript 文件。当您在 pac-proxy 中调用 dnsResolve 时,它​​会调用 dnsResolve 的提供者,并且该实现在 OWS 源代码中。现在 dnsResolve 在内部调用 java.net.* 包类。这需要 Rhino 和 Java 接口在运行时已经稳定。OWS 无法创建该接口连接,因此当 javascript 尝试通过 Rhino 接口调用 java 时,它找不到 java 类,因为它无法识别该接口,所以回来说找不到 java。我和我的团队仍在分析 wireshark 的错误日志,以找出我们如何在 OWS 中进行修复或了解 OWS、Java 和 Rhino 如何在运行 OWS 的安全沙箱容器中成功地相互通信。我无法提供 ua 解决方案,但可以更好地了解您希望在哪里努力使其为您工作。

于 2022-02-08T23:44:23.967 回答