0

我有/有一个正在加载游戏的java应用程序,我试图将它变成一个小程序并加载到一个html网页中,但是当我尝试加载它时,我得到了错误并且它没有加载,有人可以请帮助我并告诉我我做错了什么?

Java应用程序代码:

import java.applet.*;
import java.awt.Dimension;
import java.io.*;
import java.net.*;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.*;

public class OSRSLoader
    implements AppletStub
{
    static JMenuBar menubar;
    static JFrame i;

    public static void main(String args[])
        throws Exception
    {
        new OSRSLoader();
    }

    public OSRSLoader()
        throws Exception, FileNotFoundException
    {
        JFrame i = new JFrame("RS Oldschool Client Beta V1:00");

        i.setSize(new Dimension(763, 514));
        i.setPreferredSize(new Dimension(763, 514));
        JLabel label = new JLabel();
        ImageIcon icon = new ImageIcon(new URL("http://www.runescape.com/image/rsp777/oldschool_ani.gif"));
        icon.setImageObserver(null);
        label.setIcon(icon);
        i.add(label);
        i.pack();
        i.setVisible(true);
        String str = getPageSource(new URL("http://oldschool38.runescape.com"));
        Pattern pattern = Pattern.compile("gamep\\w+");
        Matcher match = pattern.matcher(str);
        if(match.find())
        {
            OSRSLoader stub = new OSRSLoader(Pattern.compile("<param name=\"([^\\s]+)\"\\s+value=\"([^>]*)\">"), str);
            Download("http://oldschool38.runescape.com/", (new StringBuilder(String.valueOf(match.group(0)))).append(".jar").toString());
            stub.setCodeBase(new URL((new StringBuilder("http://oldschool38.runescape.com/")).append(match.group(0)).append(".jar").toString()));
            stub.setDocumentBase(new URL((new StringBuilder("http://oldschool38.runescape.com/")).append(match.group(0)).append(".jar").toString()));
            stub.getParameter((String)parameters.get("java_arguments"));
            URLClassLoader classLoader = new URLClassLoader(new URL[] {
                new URL("file:gamepack.jar")
            });
            Applet applet = (Applet)classLoader.loadClass("client").newInstance();
            applet.setStub(stub);
            applet.setSize(new Dimension(763, 514));
            applet.init();
            applet.start();
            i.add(applet);
            i.pack();
            i.setDefaultCloseOperation(3);
            label.setVisible(false);
        }
    }



    public OSRSLoader(Pattern parameterPattern, String frameSource)
    {
        String key;
        String value;
        for(Matcher param = parameterPattern.matcher(frameSource); param.find(); System.out.println((new StringBuilder("Parameter Loaded. Key = ")).append(key).append(", value =").append(value).toString()))
        {
            key = param.group(1);
            value = param.group(2);
            parameters.put(key, value);
        }

    }

    private String getPageSource(URL url)
        throws IOException, InterruptedException
    {
        URLConnection cn = url.openConnection();
        cn.addRequestProperty("Accept", "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");
        cn.addRequestProperty("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
        cn.addRequestProperty("Accept-Encoding", "gzip,deflate");
        cn.addRequestProperty("Accept-Language", "en-gb,en;q=0.5");
        cn.addRequestProperty("Connection", "keep-alive");
        cn.addRequestProperty("Host", "www.runescape.com");
        cn.addRequestProperty("Keep-Alive", "300");
        cn.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:9.0.1) Gecko/20100101 Firefox/9.01");
        DataInputStream di = new DataInputStream(cn.getInputStream());
        byte tmp[] = new byte[cn.getContentLength()];
        di.readFully(tmp);
        di.close();
        Thread.sleep(250 + (int)Math.random() * 500);
        return new String(tmp);
    }

    public void appletResize(int i, int j)
    {
    }

    public void setCodeBase(URL codeBase)
    {
        this.codeBase = codeBase;
    }

    public void setDocumentBase(URL documentBase)
    {
        this.documentBase = documentBase;
    }

    public AppletContext getAppletContext()
    {
        return null;
    }

    public URL getCodeBase()
    {
        return codeBase;
    }

    public URL getDocumentBase()
    {
        return documentBase;
    }

    public String getParameter(String name)
    {
        return (String)parameters.get(name);
    }

    public boolean isActive()
    {
        return false;
    }

    public static void Download(String world, String archive)
        throws Exception
    {
        URLConnection jarConnection = (new URL((new StringBuilder(String.valueOf(world))).append(archive).toString())).openConnection();
        FileOutputStream out = new FileOutputStream("./gamepack.jar");
        InputStream input = jarConnection.getInputStream();
        byte info[] = new byte[1024];
        int ln;
        while((ln = input.read(info)) != -1) 
            out.write(info, 0, ln);
    }

    private static Map parameters = new HashMap();
    private URL codeBase;
    private URL documentBase;

}

Java小程序代码:

import java.applet.*;
import java.awt.*;
import java.io.DataInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Main extends Applet implements AppletStub {


    public void init() {
    }

     public void run() throws FileNotFoundException, Exception {
     new Main();
     }

     public Main() throws Exception, FileNotFoundException {

            String str = getPageSource(new URL("http://oldschool38.runescape.com"));
            Pattern pattern = Pattern.compile("gamep\\w+");
            Matcher match = pattern.matcher(str);
            if(match.find())
            {
                Main stub = new Main(Pattern.compile("<param name=\"([^\\s]+)\"\\s+value=\"([^>]*)\">"), str);
                Download("http://oldschool38.runescape.com/", (new StringBuilder(String.valueOf(match.group(0)))).append(".jar").toString());
                stub.setCodeBase(new URL((new StringBuilder("http://oldschool38.runescape.com/")).append(match.group(0)).append(".jar").toString()));
                stub.setDocumentBase(new URL((new StringBuilder("http://oldschool38.runescape.com/")).append(match.group(0)).append(".jar").toString()));
                stub.getParameter((String)parameters.get("java_arguments"));
                URLClassLoader classLoader = new URLClassLoader(new URL[] {
                    new URL("file:gamepack.jar")
                });
                Applet applet = (Applet)classLoader.loadClass("client").newInstance();
                applet.setStub(stub);
                applet.setPreferredSize(new Dimension(765, 503));
                applet.setSize(new Dimension(765, 503));
                applet.init();
                applet.start();
            }
        }
     public Main(Pattern parameterPattern, String frameSource)
        {
            String key;
            String value;
            for(Matcher param = parameterPattern.matcher(frameSource); param.find(); System.out.println((new StringBuilder("Parameter Loaded. Key = ")).append(key).append(", value =").append(value).toString()))
            {
                key = param.group(1);
                value = param.group(2);
                parameters.put(key, value);
            }

        }

        private String getPageSource(URL url)
            throws IOException, InterruptedException
        {
            URLConnection cn = url.openConnection();
            cn.addRequestProperty("Accept", "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");
            cn.addRequestProperty("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
            cn.addRequestProperty("Accept-Encoding", "gzip,deflate");
            cn.addRequestProperty("Accept-Language", "en-gb,en;q=0.5");
            cn.addRequestProperty("Connection", "keep-alive");
            cn.addRequestProperty("Host", "www.runescape.com");
            cn.addRequestProperty("Keep-Alive", "300");
            cn.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:9.0.1) Gecko/20100101 Firefox/9.01");
            DataInputStream di = new DataInputStream(cn.getInputStream());
            byte tmp[] = new byte[cn.getContentLength()];
            di.readFully(tmp);
            di.close();
            Thread.sleep(250 + (int)Math.random() * 500);
            return new String(tmp);
        }

        public void appletResize(int i, int j)
        {
        }

        public void setCodeBase(URL codeBase)
        {
            this.codeBase = codeBase;
        }

        public void setDocumentBase(URL documentBase)
        {
            this.documentBase = documentBase;
        }

        public AppletContext getAppletContext()
        {
            return null;
        }

        public URL getCodeBase()
        {
            return codeBase;
        }

        public URL getDocumentBase()
        {
            return documentBase;
        }

        public String getParameter(String name)
        {
            return (String)parameters.get(name);
        }

        public boolean isActive()
        {
            return false;
        }

        public static void Download(String world, String archive)
            throws Exception
        {
            URLConnection jarConnection = (new URL((new StringBuilder(String.valueOf(world))).append(archive).toString())).openConnection();
            FileOutputStream out = new FileOutputStream("./gamepack.jar");
            InputStream input = jarConnection.getInputStream();
            byte info[] = new byte[1024];
            int ln;
            while((ln = input.read(info)) != -1) 
                out.write(info, 0, ln);
        }

        private static Map parameters = new HashMap();
        private URL codeBase;
        private URL documentBase;

    }

当我尝试在 html 中加载它时的错误是:java.lang.reflect.invocationtargetexception 我单击详细信息,它是:

Java Plug-in 10.25.2.17
Using JRE version 1.7.0_25-b17 Java HotSpot(TM) Client VM
User home directory = C:\Users\Will
----------------------------------------------------
c:   clear console window
f:   finalize objects on finalization queue
g:   garbage collect
h:   display this help message
l:   dump classloader list
m:   print memory usage
o:   trigger logging
q:   hide console
r:   reload policy configuration
s:   dump system and deployment properties
t:   dump thread list
v:   dump thread stack
x:   clear classloader cache
0-5: set trace level to <n>
----------------------------------------------------
4

0 回答 0