applet的安全性要求不能建立另一个网络连接导致:java.security.AccessControlException: access denied (java.net.SocketPermission www.csunion.com resolve)建议写程序时不要省掉catch后面的语句,不方便查错,可以加上:
catch(Exception e){ e.printStackTrace();}
catch(Exception e){ e.printStackTrace();}
偶刚接触JAVA网络编程,就碰上了这个问题!
这段代码有哪位运行通过了吗?
import java.applet.*;
import java.net.*;
import java.awt.*;public class GetImage extends Applet{
Image image = null;
public void init() {
String url = "file:you.jpg";
try {
image = getImage(new URL(url));
System.out.println("sdfsf" + image);
} catch(Exception e){ e.printStackTrace();System.exit(0);}
}public void paint(Graphics g) {
g.drawImage(image, 0, 0,this);
}
}
但通过URL怎么不行呢?难道想存取网站的图片必须加上用户名和密码什么的?
具体如下:
1、用记事本或者jdk自带的policytool.exe工具生成一个新的my.polocy文件,放在c:\j2sdk1.4.2_01\jre\lib\security下(路径根据你的情况变化),内容为(引号中的路径根据你的情况做相应调整):
grant codeBase "file:c:/myproj/*" {
permission java.net.SocketPermission "www.csunion.com:80", "resolve";
};
也就是赋予你的GetImage.class文件所在目录访问www.csunion.com:80端口的权限。
2、运行appletviewer时使用如下参数
appletviewer -J-Djava.security.policy=c:\j2sdk1.4.2_01\jre\lib\security\my.policy Noname2.html