好吧,简单地说我正在java applet中进行测验游戏,我想序列化存储高分的对象。当我这样做时,它在eclipse中完美运行,但不适用于浏览器。
以下是我的applet的代码,它读取文件: 是的,我有所有适当的进口
package histApplet;
public class QuizApplet extends Applet
{
private static final String TRACKERLOC = "histApplet/track.ser";
private StatsTracker tracker;
private int difflevel = 1;
//other instance variables
public void init()
{
//other code
if(new File(TRACKERLOC).exists())
{
tracker = null;
FileInputStream fis = null;
ObjectInputStream in = null;
try
{
fis = new FileInputStream(TRACKERLOC);
in = new ObjectInputStream(fis);
tracker = (StatsTracker)in.readObject();
in.close();
}
catch(IOException ex)
{
ex.printStackTrace();
}
catch(ClassNotFoundException ex)
{
ex.printStackTrace();
}
}
else
{
tracker = new StatsTracker(difflevel);
}
//other code
}
这是我的HTML代码
<html>
<head><title>QuizApplet</title></head>
<body>
<center><applet code="histApplet/QuizApplet.class" height=550 width=700>
</applet></center>
</body>
</html>
如果我注释掉这段代码,它可以在浏览器中使用,但不会。我不确定为什么这不起作用,任何帮助都将不胜感激。
答案 0 :(得分:1)
答案 1 :(得分:1)
Java Applet在浏览器的沙箱中执行,因此对运行applet的客户端计算机(进入浏览器)的资源访问权限有限。 Applet无法访问文件系统,如多个站点SecuringJava,Oracle中所述。
您需要签署您的Applet(可信代码)才能访问文件系统Oracle。
答案 2 :(得分:0)
正如David所写,applet无法访问本地文件系统。
他们可以将数据发送给他们来自的主机(并从那里接收答案),因此如果你有一些接受这些高分的服务器端程序,你可以将高分存储在服务器上。
另一种方法是使用a JNLP-deployed applet,然后您的applet可以使用PersistenceService访问特定于applet的本地存储。