Апплет: Исключение вызывается при закрытии - PullRequest
1 голос
/ 09 июня 2011

У меня странное поведение, когда мой апплет останавливается в веб-браузере

Exception in thread "SwingWorker-pool-1-thread-3" java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThread)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    at sun.applet.AppletSecurity.checkAccess(AppletSecurity.java:214)
    at java.lang.Thread.checkAccess(Thread.java:1330)
    at java.lang.Thread.interrupt(Thread.java:903)
    at java.util.concurrent.ThreadPoolExecutor$Worker.interruptIfIdle(ThreadPoolExecutor.java:844)
    at java.util.concurrent.ThreadPoolExecutor.interruptIdleWorkers(ThreadPoolExecutor.java:994)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:952)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
    at java.lang.Thread.run(Thread.java:680)

Кто-нибудь может объяснить эту проблему?

Jason


, отслеживая еще одну ошибку, я решил упростить мой код до минимума и в процессе поиска обнаружил, что это исключение:

new ImageLoaderWorker(this,background.setCoordinatesCenter(400, 240)).execute();

фон содержит полезную информацию, такую ​​как размер пути и т. Д.

ImageLoaderWorker определен так:

public class ImageLoaderWorker extends SwingWorker<ImageIcon, Void> {

@Override
    public ImageIcon doInBackground() {
        System.err.println("do in background");
        return loadImage();
    }

@Override
    public void done() {
        System.err.println("done");
        try {
            if(!sskkWhitePages.containsKey(iich.getName())){
                sskkWhitePages.put(iich.getName(), get());
            }
            iich.transfertImage();
            if(callback != null){
                callback.imageLoaded(iich.getName());
            }
        } catch (InterruptedException ignore) {}
        catch (java.util.concurrent.ExecutionException e) {
            String why = null;
            Throwable cause = e.getCause();
            if (cause != null) {
                why = cause.getMessage();
            } else {
                why = e.getMessage();
            }
            System.err.println("Error retrieving file: " + why);
        }
    }

/**
     * Load the image for the specified frame of animation. Since
     * this runs as an applet, we use getResourceAsStream for 
     * efficiency and so it'll work in older versions of Java Plug-in.
     */
    protected ImageIcon loadImage() {
        //Not really relevant to the problem I think so I skipped it to avoir overloading the question
}

1 Ответ

1 голос
/ 09 июня 2011

Я думаю, что это может быть ошибка JDK - посмотрите этот Отчет об ошибке NetBeans .

В отчете об ошибке NetBeans приводится идентификатор ошибки JDK и сказано, что она исправлена ​​в Java 6. Нопроцитированная ошибка JDK более недоступна.

Если в вашем браузере установлен плагин Java 5, это правдоподобное объяснение, и правдоподобным решением будет обновить плагин до Java 6.

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