2012-01-31 21 views
1

アプレットを作成しました。このアプレットは、アプレットビューアで完全に機能します。しかし、私はこのアプレットのクラスファイルを自分自身に署名したJarファイルとともにディレクトリに入れ、アプレットタグ付き.HTMLファイルを作成すると動作しません。私はjava.security.AccessControlException: access deniedを得続けます。 どうすればこの作品を作れますか?それは問題であり、その下にアプレットが埋め込まれている方法です下に、ここでソースコードは、ある:JavaアプレットがHTMLで動作しない

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> 
+0

デジタル署名されたコードを受け入れるよう求められましたか?なぜ、フレームではなくアプレットをコーディングするのですか? –

+0

私はコードを受け入れるように求められ、私は特別なプロジェクトのためにアプレットをやっています。 – DarkGhoul45

+0

* "コードに署名するように促されます" * ***署名されたコードを受け入れるように促されたかどうか尋ねられました。 * "私は特別なプロジェクトのためにアプレットをやっている" *私の質問には答えられない。なぜフレームではなくアプレットですか?この特別なプロジェクトについて、何が必要ですか?(特に)アプレットが必要ですか? –

答えて

0

証明書がブラウザで信頼されていないか、ユーザーが明示的な許可を与えていない。あなたは私たちにコード(確かに良いこと)を与えましたが、署名そのもの、ブラウザ、またはアプレットを埋め込んだ方法については何も与えませんでした。

+0

I少し物事を追加して、もう一度チェックしてみてください。私を助けようとしている皆さん、ありがとう。 – DarkGhoul45

関連する問題