Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 序列化小程序中的对象_Java_Serialization_Applet - Fatal编程技术网

Java 序列化小程序中的对象

Java 序列化小程序中的对象,java,serialization,applet,Java,Serialization,Applet,好的,简单地说,我正在一个java小程序中制作一个问答游戏,我想序列化一个存储高分的对象。当我这样做时,它在eclipse中工作得非常好,但在浏览器中却不行 以下是我的小程序读取文件的代码: 是的,我有所有合适的进口货 package histApplet; public class QuizApplet extends Applet { private static final String TRACKERLOC = "histApplet/track.ser"; private Stats

好的,简单地说,我正在一个java小程序中制作一个问答游戏,我想序列化一个存储高分的对象。当我这样做时,它在eclipse中工作得非常好,但在浏览器中却不行

以下是我的小程序读取文件的代码: 是的,我有所有合适的进口货

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>

基扎普利特

如果我注释掉这段代码,它可以在浏览器中工作,但在其他情况下不能。我不知道为什么这不起作用,非常感谢您的帮助。

请参阅我的答案。

Java小程序在浏览器中的沙箱中执行,因此对运行小程序的客户端计算机中的资源(进入浏览器)的访问受到限制。小程序无法访问文件系统,如多个站点中所述


您需要对小程序(受信任的代码)进行签名才能访问文件系统。

正如David所写,小程序无法访问本地文件系统

他们可以将数据发送到他们来自的主机(并从那里接收答案),因此,如果您有一些服务器端程序在那里接受这些高分,您可以将高分存储在服务器上


另一种方法是使用,然后您的小程序可以使用访问特定于小程序的本地存储。

我将使用什么类型的程序来接受文件?使用套接字会起作用吗,还是特定于服务器?此外,程序是否必须全天候运行,或者是否可以在需要接收数据时激活?对于所有的问题,我都很抱歉,我对在编程中使用服务器和互联网非常陌生。任何服务器端应用程序都是可能的。如果该程序能够解释序列化数据(而不是简单地将其发送回下一个小程序),那么使用基于Java的解决方案就更容易了。您可以让一些程序监听套接字(一直运行),如果需要,您可以通过inetd启动程序(然后客户端也将使用套接字连接),或者使用一些基于HTTP的解决方案,如Servlet、PHP页面或CGI脚本。如果服务器程序是基于Java的,那么最好是已经运行的进程,因为VM需要一些时间启动。(例如,这将是一个Servlet或独立套接字解决方案。)