[izpack-user] ClassNotFoundException PathSelectionPanel

501 views
Skip to first unread message

Maduri Narasimhan

unread,
Feb 18, 2014, 2:00:56 PM2/18/14
to us...@izpack.codehaus.org

Hello,

 

I have installed IzPack 5.0.0-rc1, I have a successful compilation, but running the installer gives the following error -

 

java.lang.ClassNotFoundException: com.izforge.izpack.panels.path.PathSelectionPanel

        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

       at java.security.AccessController.doPrivileged(Native Method)

        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:423)

        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)

        at java.lang.Class.forName0(Native Method)

        at java.lang.Class.forName(Class.java:188)

        at com.izforge.izpack.gui.IzPanelLayout.<clinit>(IzPanelLayout.java:104)

        at com.izforge.izpack.panels.hello.HelloPanel.<init>(HelloPanel.java:65)

        at com.izforge.izpack.panels.checkedhello.CheckedHelloPanel.<init>(CheckedHelloPanel.java:79)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

        at java.lang.reflect.Constructor.newInstance(Constructor.java:525)

        at org.picocontainer.injectors.AbstractInjector.newInstance(AbstractInjector.java:147)

        at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:348)

        at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:272)

        at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:370)

        at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64)

        at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91)

        at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:692)

        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:646)

        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:671)

        at com.izforge.izpack.core.container.AbstractContainer.getComponent(AbstractContainer.java:131)

        at com.izforge.izpack.core.factory.DefaultObjectFactory.create(DefaultObjectFactory.java:74)

        at com.izforge.izpack.core.factory.DefaultObjectFactory.create(DefaultObjectFactory.java:102)

        at com.izforge.izpack.installer.panel.AbstractPanelView.createView(AbstractPanelView.java:311)

        at com.izforge.izpack.installer.panel.AbstractPanelView.getView(AbstractPanelView.java:189)

        at com.izforge.izpack.installer.gui.IzPanels.initialise(IzPanels.java:80)

        at com.izforge.izpack.installer.gui.InstallerFrame.buildGUI(InstallerFrame.java:402)

        at com.izforge.izpack.installer.gui.InstallerController$1.run(InstallerController.java:35)

        at com.izforge.izpack.installer.gui.InstallerController.run(InstallerController.java:64)

        at com.izforge.izpack.installer.gui.InstallerController.buildInstallation(InstallerController.java:30)

        at com.izforge.izpack.installer.bootstrap.InstallerGui$1.run(InstallerGui.java:60)

        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)

        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)

        at java.awt.EventQueue.access$200(EventQueue.java:103)

        at java.awt.EventQueue$3.run(EventQueue.java:688)

        at java.awt.EventQueue$3.run(EventQueue.java:686)

        at java.security.AccessController.doPrivileged(Native Method)

        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

        at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)

        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)

        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)

        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Exception in thread "AWT-EventQueue-0" com.izforge.izpack.api.exception.IzPackException: java.lang.NullPointerException

        at com.izforge.izpack.installer.bootstrap.InstallerGui$1.run(InstallerGui.java:64)

        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)

        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)

        at java.awt.EventQueue.access$200(EventQueue.java:103)

        at java.awt.EventQueue$3.run(EventQueue.java:688)

        at java.awt.EventQueue$3.run(EventQueue.java:686)

        at java.security.AccessController.doPrivileged(Native Method)

        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

        at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)

        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)

        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)

        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Caused by: java.lang.NullPointerException

        at com.izforge.izpack.gui.IzPanelLayout.getIntermediarId(IzPanelLayout.java:261)

        at com.izforge.izpack.gui.IzPanelLayout.addLayoutComponent(IzPanelLayout.java:1260)

        at java.awt.Container.addImpl(Container.java:1120)

        at java.awt.Container.add(Container.java:966)

        at com.izforge.izpack.panels.hello.HelloPanel.<init>(HelloPanel.java:98)

        at com.izforge.izpack.panels.hello.HelloPanel.<init>(HelloPanel.java:65)

        at com.izforge.izpack.panels.checkedhello.CheckedHelloPanel.<init>(CheckedHelloPanel.java:79)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

        at java.lang.reflect.Constructor.newInstance(Constructor.java:525)

        at org.picocontainer.injectors.AbstractInjector.newInstance(AbstractInjector.java:147)

        at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:348)

        at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:272)

        at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:370)

        at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64)

        at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91)

        at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:692)

        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:646)

        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:671)

        at com.izforge.izpack.core.container.AbstractContainer.getComponent(AbstractContainer.java:131)

        at com.izforge.izpack.core.factory.DefaultObjectFactory.create(DefaultObjectFactory.java:74)

        at com.izforge.izpack.core.factory.DefaultObjectFactory.create(DefaultObjectFactory.java:102)

        at com.izforge.izpack.installer.panel.AbstractPanelView.createView(AbstractPanelView.java:311)

        at com.izforge.izpack.installer.panel.AbstractPanelView.getView(AbstractPanelView.java:189)

        at com.izforge.izpack.installer.gui.IzPanels.initialise(IzPanels.java:80)

        at com.izforge.izpack.installer.gui.InstallerFrame.buildGUI(InstallerFrame.java:402)

        at com.izforge.izpack.installer.gui.InstallerController$1.run(InstallerController.java:35)

        at com.izforge.izpack.installer.gui.InstallerController.run(InstallerController.java:64)

        at com.izforge.izpack.installer.gui.InstallerController.buildInstallation(InstallerController.java:30)

        at com.izforge.izpack.installer.bootstrap.InstallerGui$1.run(InstallerGui.java:60)

        ... 14 more

 

Please advise,

 

Maduri

François Régnier

unread,
Feb 19, 2014, 8:23:51 AM2/19/14
to izpac...@googlegroups.com, us...@izpack.codehaus.org, maduri_n...@datacard.com
Hello Maduri,

I think your problem is due to this bug: https://jira.codehaus.org/browse/IZPACK-919.

You can add a DefaultTargetPanel to solve it.

François

Maduri Narasimhan

unread,
Feb 19, 2014, 9:09:13 AM2/19/14
to François Régnier, izpac...@googlegroups.com, us...@izpack.codehaus.org

Hello,

 

I have extended TargetPanel, and created my own Panel (my project needs a customized screen, taking two installation paths).So I do not need another TargetPanel.

 

Are there any other workarounds?

 

Maduri

François Régnier

unread,
Feb 19, 2014, 9:55:37 AM2/19/14
to izpac...@googlegroups.com, François Régnier, us...@izpack.codehaus.org, maduri_n...@datacard.com
Maduri,

To solve this problem, I added a DefaultTargetPanel which is not visible and a UserInputPath with two fields to enter my two installation pathes. I don't know if a better way exists.

François

Paul Bors

unread,
Feb 24, 2014, 10:50:13 AM2/24/14
to us...@izpack.codehaus.org
Something like this:

public class TargetPanel extends com.izforge.izpack.panels.target.TargetPanel {

    private static final long serialVersionUID = 1L;

    

    private static final transient Logger logger = Logger.getLogger(TargetPanel.class.getName());

    

    private FileSelectionPanel fileSelectionPanel;

    

    public TargetPanel(Panel panel, InstallerFrame parent, GUIInstallData installData, Resources resources, Log log) {

        super(panel, parent, installData, resources, log);

    }

    

    @Override

    public boolean isValidated() {

        boolean result = true;

        String osName = System.getProperty("os.name");

        if(result && (osName != null) && osName.toLowerCase().contains("win")) {

            String chosenPath = pathSelectionPanel.getPath();

            if(!chosenPath.isEmpty()) {

                FileUtils fileUtils = FileUtils.getFileUtils();

                File path = new File(chosenPath);

                try {

                    // Check that the path can be created

                    if(!path.exists()) {

                        fileUtils.createNewFile(path.getAbsoluteFile(), true);

                    }

                    // Check for valid URI chars

                    new URI(path.getAbsolutePath().replaceAll("\\\\", "/").replaceAll(" ", "%20"));

                } catch(URISyntaxException se) {

                    if(Debug.isSTACKTRACE()) {

                        se.printStackTrace();

                    }

                    logger.log(Level.WARNING, "Installation path folder name must be a valid URI!", se);

                    emitError(getString("installer.error"),

                        getString(getI18nStringForClass("foldername.uri.error", "MyTargetPanel")) + "\n" + se.getLocalizedMessage()

                    );

                    result = false;

                } catch(Throwable t) {

                    if(Debug.isSTACKTRACE()) {

                        t.printStackTrace();

                    }

                    logger.log(Level.WARNING, "Installation path folder name must be a valid windows folder name!", t);

                    emitError(getString("installer.error"),

                        getString(getI18nStringForClass("foldername.windows.error", "MyTargetPanel") + "\n" + t.getLocalizedMessage())

                    );

                    result = false;

                } finally {

                    try {

                        logger.log(Level.FINE, "Deleting tmp validation folder: " + path.getAbsolutePath());

                        FileUtils.deleteRecursively(path);

                        deleteEmptyDirs(path);

                    } catch(Throwable t) {

                        if(Debug.isSTACKTRACE()) {

                            t.printStackTrace();

                        }

                        emitWarning(getString("installer.error"),

                            getString(String.format(getI18nStringForClass("foldername.cleanup.error", "MyTargetPanel"), t.getLocalizedMessage(), path.getAbsolutePath()))

                        );

                    }

                }

            }

        }

        if(result) {

            result = super.isValidated();

        }

        return result;

    }

    

    /**

     * Add more components under the path input components.

     */

    @Override

    public void createLayoutBottom() {

        add(createLabel("", "empty", LEFT, true), NEXT_LINE);

        add(createLabel("infoMyCfg", "MyTargetPanel", "wizard", LEFT, true), NEXT_LINE);

        // Create file selection components and add they to this panel.

        fileSelectionPanel = new FileSelectionPanel(

            this, installData, false,

            System.getProperty("MyCfg"), 71,

            new ArrayList<ValidatorContainer>(),

            "cfg", "My cfg properties file"

        ) {

            private static final long serialVersionUID = 1L;

            @Override

            protected void fileChooserApproved() {

                File selectedFile = fileSelectionPanel.getSelectedFile();

                if(selectedFile != null) {

                    try {

                        PropertiesUtil.loadCustomProperties(selectedFile.getAbsolutePath(), installData);

                        // Adjust GUI specific installation path

                        String myAppInstallPath = installData.getVariables().getProperties().getProperty(“myApp.installPath");

                        if((myAppInstallPath != null) && (myAppInstallPath.trim().length() > 0)) {

                            pathSelectionPanel.setPath(myAppInstallPath);

                        }

                    } catch(Throwable t) {

                        showCustomError(t);

                    }

                }

            }

        };

        fileSelectionPanel.setAllowEmptyInput(true);

        add(fileSelectionPanel, NEXT_LINE);

        add(createLabel("noteMyCfg", "MyTargetPanel", "flag", LEFT, true), NEXT_LINE);

        super.createLayoutBottom();

    }


...
Reply all
Reply to author
Forward
0 new messages