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
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
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();
}