Ignore:
Timestamp:
09/30/19 16:29:01 (5 years ago)
Author:
pharms
Message:

solved class loader issues

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-ui-core/src/main/java/de/ugoe/cs/autoquest/commands/misc/CMDload.java

    r927 r2285  
    1515package de.ugoe.cs.autoquest.commands.misc; 
    1616 
     17import java.io.File; 
    1718import java.io.FileInputStream; 
    1819import java.io.IOException; 
    1920import java.io.ObjectInputStream; 
     21import java.io.ObjectStreamClass; 
    2022import java.util.List; 
    2123 
     24import de.ugoe.cs.autoquest.plugin.AutoQUESTPlugin; 
     25import de.ugoe.cs.autoquest.plugin.PluginLoader; 
    2226import de.ugoe.cs.util.console.Command; 
     27import de.ugoe.cs.util.console.CommandExecuter; 
    2328import de.ugoe.cs.util.console.Console; 
    2429import de.ugoe.cs.util.console.GlobalDataContainer; 
     
    4853                } 
    4954 
    50                 FileInputStream fis = null; 
     55                final PluginLoader pluginLoader = new PluginLoader(new File("lib")); 
     56                pluginLoader.load(); 
     57 
     58                FileInputStream fis = null; 
    5159                ObjectInputStream in = null; 
    5260                try { 
    5361                        fis = new FileInputStream(filename); 
    54                         in = new ObjectInputStream(fis); 
     62                        in = new ObjectInputStream(fis) { 
     63                            @Override 
     64                            protected Class<?> resolveClass(ObjectStreamClass clazz) 
     65                                    throws IOException, ClassNotFoundException 
     66                            { 
     67                                try { 
     68                                    return this.getClass().getClassLoader().loadClass(clazz.getName()); 
     69                                } 
     70                                catch (Exception e) { 
     71                                    for (AutoQUESTPlugin plugin : pluginLoader.getPlugins()) { 
     72                                        try { 
     73                                            return plugin.getClass().getClassLoader().loadClass(clazz.getName()); 
     74                                        } 
     75                                        catch (Exception e2) { 
     76                                            // ignore and try next 
     77                                        } 
     78                                    } 
     79                                } 
     80                                 
     81                                throw new ClassNotFoundException("could not load class " + clazz.getName() + 
     82                                                                 " neither from normal class loader nor from " + 
     83                                                                 "plug in class loaders"); 
     84                            } 
     85                        }; 
    5586                        in.readObject(); 
    5687                        in.close(); 
Note: See TracChangeset for help on using the changeset viewer.