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 将此代码作为小程序运行,它运行良好,但是如果我尝试将它嵌入网页中运行,我只会得到“CODE:”。代码冻结在这一行:

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

有人知道我在做什么错吗?谢谢!

4

2 回答 2

1

这是签名的小程序。未签名的 Applet 可以从它们所在的服务器打开网络连接。Applet 安全模型不允许打开到非源服务器的网络连接

看看这里http://docs.oracle.com/javase/tutorial/deployment/applet/security.html

要确认这一点,您可以尝试从托管此小程序的服务器打开流。

于 2012-05-26T14:04:26.733 回答
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 回答