2012-05-26 62 views
4

不工作我試圖運行Java小程序的代碼:URL連接的小程序

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())); 

任何人都知道我在做什麼錯了?謝謝!

回答

1

這是簽名的小程序。未簽名的Applet可以從服務器的源地址開啓網絡連接。 Applet的安全模型不允許然後打開網絡連接到非始發服務器

這裏http://docs.oracle.com/javase/tutorial/deployment/applet/security.html

看看爲了證實這一點,你可以嘗試從哪裏該applet託管服務器打開流。

+0

我不確定我在這個領域是全新的。我剛創建了這樣的代碼,編譯它並使用html頁面來顯示它的內容。 –

+0

看看上面給出的鏈接 –

+0

*「我不確定我在這個領域是全新的」*當你顯然不知道基於(基於瀏覽器的)Java控制檯時,開發小應用程序表明前面有一個陡峭的學習曲線。作爲旁白。像谷歌和雅虎這樣的網站通常會通過「程序化手段」抵制訪問 - 例如您網站上的小程序。 –

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文件 - 罐子CVF Applet.jar小程序的.class
  3. 生成密鑰
  4. 簽署JAR文件
  5. 出口公鑰證書 ...

它繼續下去,這是一個非常漫長的過程。您可以按照所有步驟操作in this page