У меня странное поведение, когда мой апплет останавливается в веб-браузере
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
}