Java Applet 不支持 HTML

标签 java html css applet

我做了一个Applet。此小程序在 appletviewer 中完美运行。但是,当我将这个 applet 的类文件与我自己签名的 Jar 文件一起放在一个目录中,并创建一个带有 applet 标签的 .HTML 文件时,它不起作用。我不断收到 java.security.AccessControlException: access denied。 我怎样才能使这项工作?这是源代码,下面是问题,下面是小程序的嵌入方式。:

import javax.swing.*;
import java.applet.Applet;
import java.applet.AppletContext;
import java.applet.AppletStub;
import java.awt.*;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.HashMap;

public class RSLoad extends JApplet implements AppletStub {

/**
 * 
 */
private static final long serialVersionUID = 1L;
private static final HashMap<String, String> PARAMETERS = new HashMap<String, String>();
private static final String LINK = "http://world2.runescape.com/";

public void init() {
    try {
        setVisible(true);
        setSize(775, 540);
        parse(LINK);
        dwnld(LINK + PARAMETERS.get("archive"));
        ClassLoader loader = new URLClassLoader(new URL[]{new File("Runescape.jar").toURI().toURL()});
        Class<?> client = loader.loadClass("Rs2Applet");
        Applet applet = (Applet) client.newInstance();
        applet.setStub(this);
        applet.init();
        applet.start();
        add(applet, BorderLayout.CENTER);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void appletResize(int width, int height) {
}

public final String getParameter(String name) {
    return PARAMETERS.get(name);
}
public final URL getDocumentBase() {
    try {
        return new URL(LINK);
    } catch (MalformedURLException e) {
        return null;
    }
}

public final URL getCodeBase() {
    try {
        return new URL(LINK);
    } catch (MalformedURLException e) {
        return null;
    }
}

public final AppletContext getAppletContext() {
    return null;
}

private void parse(final String url) {
    try {
        BufferedReader in = new BufferedReader(new InputStreamReader(new URL(url).openStream()));
        String line;
        while ((line = in.readLine()) != null) {
            if (line.contains("app") && line.contains("write")) {
                PARAMETERS.put("<app", "");
                PARAMETERS.put("let ", "");
            } else if (line.contains("scriptsrc") || line.contains("ie6")) {
            } else if (line.contains("document.write")) {
                line = line.replaceAll("document.write", "").replaceAll("<param name=\"", "").replaceAll("\">'", "\"").replaceAll("'", "").replaceAll("\\(", "").replaceAll("\\)", "").replaceAll("\"", "").replaceAll(" ", "").replaceAll(";", "").replaceAll("value", "");
                String[] splitted = line.split("=");
                if (splitted.length == 1) {
                    PARAMETERS.put(splitted[0], "");
                } else if (splitted.length == 2) {
                    PARAMETERS.put(splitted[0], splitted[1]);
                } else if (splitted.length == 3) {
                    PARAMETERS.put(splitted[0], splitted[1] + splitted[2]);
                }
            }
        }
        in.close();
    } catch (Exception e) {
        System.out.println("Error Parsing!");
    }
}

private void dwnld(final String url) {
    try {
        BufferedInputStream in = new BufferedInputStream(new URL(url).openStream());
        FileOutputStream fos = new FileOutputStream("Runescape.jar");
        BufferedOutputStream out = new BufferedOutputStream(fos, 1024);
        byte[] data = new byte[1024];
        int x;
        while ((x = in.read(data, 0, 1024)) >= 0) {
            out.write(data, 0, x);
        }
        in.close();
        out.close();
    } catch (Exception e) {
        System.out.println("Error Downloading!");
        e.printStackTrace();
    }
}

}`

'java.security.AccessControlException: access denied (java.net.SocketPermission world2.runescape.com:80 connect,resolve)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1034)
at sun.plugin2.applet.Applet2SecurityManager.checkConnect(Applet2SecurityManager.java:505)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:528)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:234)
at sun.net.www.http.HttpClient.New(HttpClient.java:307)
at sun.net.www.http.HttpClient.New(HttpClient.java:324)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
at java.net.URL.openStream(URL.java:1010)
at RSLoad.dwnld(RSLoad.java:95)
at RSLoad.init(RSLoad.java:26)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1639)
at java.lang.Thread.run(Thread.java:680)
java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1285)
at java.lang.System.getProperty(System.java:667)
at java.io.UnixFileSystem.resolve(UnixFileSystem.java:118)
at java.io.File.getAbsolutePath(File.java:501)
at java.io.File.getAbsoluteFile(File.java:517)
at java.io.File.toURI(File.java:660)
at RSLoad.init(RSLoad.java:27)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1639)
at java.lang.Thread.run(Thread.java:680)

像这样嵌入:

 <html>
 <body>
 <applet code=RSLoad.class archive="RSLoad.jar" width=100% height=100%>
 </applet>
 </body>
 </html>

最佳答案

您的证书在浏览器中不受信任,或者用户未给予明确许可。您给了我们代码(绝对是一件好事),但没有提供任何关于签名本身、浏览器或您嵌入小程序的方式的信息。

关于Java Applet 不支持 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9088725/

相关文章:

java - 使用 Elastic Search 滚动聚合

java - Java 中的正则表达式及其与 indexOf 相比的性能

java - 如何以反射方式打印方法主体?

javascript - Like 占位符文本在 Firefox 中无法完美运行

css - SVG 动画 G 元素

java - 在Java中查询不起作用,但在MySQL中它工作正常,我该如何解决这个问题?

javascript - 如何更改 Bootstrap 滚动 spy 的颜色,为什么我的 Logo 不调整大小?

css - 不调整 UL 和 DIV 容器的高度

css - 在 PhpStorm 中使用重新格式化 CSS 时如何保持缩进?

html - nth-of-type(x)(带有媒体查询)在 Safari 9.1.1 中无法正常工作