mojo2012 / zipeg

Automatically exported from code.google.com/p/zipeg
0 stars 0 forks source link

NullPointerException sun.awt.shell.Win32ShellFolder2$7.call #34

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
java.lang.NullPointerException
sun.awt.shell.Win32ShellFolder2$7.call(Unknown Source)
sun.awt.shell.Win32ShellFolder2$7.call(Unknown Source)
sun.awt.shell.Win32ShellFolderManager2$ComInvoker.invoke(Unknown Source)
sun.awt.shell.ShellFolder.invoke(Unknown Source)
sun.awt.shell.ShellFolder.invoke(Unknown Source)
sun.awt.shell.Win32ShellFolder2.getFileSystemPath(Unknown Source)
sun.awt.shell.Win32ShellFolder2.access$300(Unknown Source)
sun.awt.shell.Win32ShellFolder2$2.call(Unknown Source)
sun.awt.shell.Win32ShellFolder2$2.call(Unknown Source)
concurrent.FutureTask$Sync.innerRun(Unknown Source)
concurrent.FutureTask.run(Unknown Source)
concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Unknown Source)
java.lang.Thread.run

Original issue reported on code.google.com by leo.kuzn...@gmail.com on 10 Dec 2010 at 10:41

GoogleCodeExporter commented 8 years ago
This is due to yet another Sun regression:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6544857
introduced recently.
I've implemented a workaround (yak!):

    public static class MyInvoker implements sun.awt.shell.ShellFolder.Invoker {

        private sun.awt.shell.ShellFolder.Invoker delegate;

        MyInvoker(sun.awt.shell.ShellFolder.Invoker i) {
            delegate = i;
        }

        public <T> T invoke(java.util.concurrent.Callable<T> tCallable) throws java.lang.Exception {
            try {
                return delegate.invoke(tCallable);
            } catch (Throwable t) {
                Debug.traceln("delegate exception: " + t.getMessage());
//              Debug.printStackTrace(t);
                throw new IOException(t.getMessage());
            }
        }

    }

    protected sun.awt.shell.ShellFolder.Invoker createInvoker() {
        return new MyInvoker(super.createInvoker());
    }

This never stops. Sun has 100 lines of code that communicate with Shell32.dll 
and cannot put them straight for almost 10 years now. Can they concentrate for 
few hours?

Original comment by leo.kuzn...@gmail.com on 10 Dec 2010 at 10:44