示例
public abstract class PrivilegedBlockLimit {

public PrivilegedBlockLimit(URL[] urls) {
this .urls = urls;
}

public void readResource() {
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
System.loadLibrary("resourcelibrary");//$NON-NLS-1$
for (int index = 0; index < urls.length; index++) {
int status = getStatusAfterLoad(urls[index]);
if (status == STATUS_ERR) {
throw new UnsupportedOperationException();
} else {
processStatus(status,urls[index]);
}
}
return null;
}
});

}

protected abstract int getStatusAfterLoad(URL url);
protected abstract void processStatus(int status, URL url) throws UnsupportedOperationException;

private URL[] urls = null;
protected static final int STATUS_ERR = -1;
}

}
解决方案
减小特权块的大小。
public abstract class PrivilegedBlockLimit {

public PrivilegedBlockLimit(URL[] urls) {
this .urls = urls;
}

public void readResource() {
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
System.loadLibrary("resourcelibrary");//$NON-NLS-1$
return null;
}
});
for (int index = 0; index < urls.length; index++) {
int status = getStatusAfterLoad(urls[index]);
if (status == STATUS_ERR) {
throw new UnsupportedOperationException();
} else {
processStatus(status,urls[index]);
}
}
}

protected abstract int getStatusAfterLoad(URL url);
protected abstract void processStatus(int status, URL url) throws UnsupportedOperationException;

private URL[] urls = null;
protected static final int STATUS_ERR = -1;
}