Сериализация объектов в апплете - PullRequest
0 голосов
/ 14 марта 2011

Хорошо, я просто делаю игру-викторину в Java-апплете и хочу сериализовать объект, который хранит высокие оценки. Когда я делаю это, он отлично работает в затмении, но не в браузере.

Вот код моего апплета, где он читает файл: и да у меня есть все соответствующие импортные

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>

Если я закомментирую этот код, он работает в браузере, но не работает. Я не уверен, почему это не работает, и любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 14 марта 2011

Java-апплеты выполняются в изолированной программной среде в браузере, поэтому имеют ограниченный доступ к ресурсам на клиентском компьютере, на котором запущен апплет (в браузере). Апплет не может получить доступ к файловой системе, как описано на нескольких сайтах SecuringJava , Oracle .

Вам необходимо подписать свой апплет (доверенный код), чтобы получить доступ к файловой системе, Oracle .

1 голос
/ 14 марта 2011
0 голосов
/ 14 марта 2011

Как пишет Дэвид, апплеты не могут получить доступ к локальной файловой системе.

Они могут отправлять данные на хост, с которого они пришли (и получать оттуда ответы), так что вы можете хранить рекорды насервер, если у вас есть какая-нибудь серверная программа, которая принимает эти рекорды.

Альтернативой может быть использование апплета, развернутого в JNLP , тогда ваш апплет может получить доступ к локальному хранилищу, специфичному для апплета.с PersistenceService .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...