4

このコードをJavaアプレットで実行しようとしています:

package test;
import java.applet.Applet;

import java.awt.Graphics;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class DrawExample extends Applet {
    public void paint(Graphics g) {
        try {
            g.drawString("CODE:",50, 30);
            URL yahoo = new URL("http://www.yahoo.com/");
            URLConnection yc = yahoo.openConnection();      
            BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
            String inputLine;
            int i=65;
            while ((inputLine = in.readLine()) != null) {
                g.drawString(inputLine,50, i);
                i=i+15;
            }
            in.close();
         } catch (Exception e) {
             e.printStackTrace();
         }          
    } 
}

このコードを Eclipse からアプレットとして実行している場合は問題なく動作しますが、Web ページに埋め込んで実行しようとすると、「CODE:」しか表示されません。コードは次の行でフリーズします。

BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));

誰が私が間違っているのか知っていますか? ありがとうございました!

4

2 に答える 2

1

Java アプレットに署名する必要があります。Eclipse で実行すると機能します。これは、Eclipseが次の内容でjava.policy.appletというファイルを作成するためです。

/* AUTOMATICALLY GENERATED ON Tue Apr 16 17:20:59 EDT 2002*/
/* DO NOT EDIT */

grant {
  permission java.security.AllPermission;
};

アプレットを Eclipse の外部で実行するには、署名する必要があります。

  1. アプレットのコンパイル - javac Applet.java
  2. JAR ファイルの作成 - jar cvf Applet.jar Applet.class
  3. キーの生成
  4. JAR ファイルに署名する
  5. 公開鍵証明書をエクスポートします ...

それは延々と続く、それは非常に長いプロセスです。このページのすべての手順に従うことができます

于 2012-05-26T14:20:08.800 に答える
1

これは署名されたアプレットですか。署名されていないアプレットは、元のサーバーからネットワーク接続を開くことができます。アプレットのセキュリティ モデルでは、発信元以外のサーバーへのネットワーク接続を開くことが許可されていません

ここを見てくださいhttp://docs.oracle.com/javase/tutorial/deployment/applet/security.html

これを確認するには、このアプレットがホストされているサーバーからストリームを開いてみてください。

于 2012-05-26T14:04:26.733 に答える