2017-08-20 1 views
0

Je vais implémenter l'assistant avec SWT/jface. Quand je lance mon programme, je l'erreur ci-dessous:java.lang.NullPointerException à org.eclipse.jface.resource.JFaceResources.getResources

Exception in thread "main" java.lang.NullPointerException 
at org.eclipse.jface.resource.JFaceResources.getResources(JFaceResources.java:209) 
at org.eclipse.jface.resource.JFaceResources.getImageRegistry(JFaceResources.java:402) 
at org.eclipse.jface.wizard.Wizard.<init>(Wizard.java:105) 
at mypackage.ReservationWizard.<init>(ReservationWizard.java:21) 
at mypackage.ReservationWizard.main(ReservationWizard.java:69) 

La partie de mon code:

public class ReservationWizard extends Wizard { 

**public ReservationWizard() {** 

// setWindowTitle("Hotel room reservation wizard"); 
// setNeedsProgressMonitor(true); 
// setDefaultPageImageDescriptor(ImageDescriptor.createFromFile(null, "Unknown.jpg")); 
} 
... 
    public static void main(String[] args) { 
**ReservationWizard wizard = new ReservationWizard();** 
WizardDialog dialog = new WizardDialog(Display.getDefault().getActiveShell(), wizard); 

dialog.setBlockOnOpen(true); 
    dialog.open(); 
} 
} 

Comme on le voit dans le code qu'il a une erreur, même quand est vide le ReservationWizard() . Que devrais-je faire?

Il a une erreur sur les lignes spécifiées.

modifier: Lorsque je créé un écran, je l'erreur ci-dessous:

at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:763) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
at org.eclipse.jface.resource.JFaceResources.getFontRegistry(JFaceResources.java:340) 
at org.eclipse.jface.window.Window.createShell(Window.java:508) 
at org.eclipse.jface.window.Window.create(Window.java:429) 
at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1096) 
at org.eclipse.jface.window.Window.open(Window.java:792) 
at mypackage.ReservationWizard.main(ReservationWizard.java:76) 
Caused by: java.lang.ClassNotFoundException: org.eclipse.core.commands.common.EventManager 
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
... 30 more 
+0

double possible de [Qu'est-ce qu'un NullPointerException, et comment puis-je résoudre ce problème?] (Https://stackoverflow.com/questions/218384/what-is-a- nullpointerexception-and-how-do-i-fix-it) – Marvin

+0

Où est définie la classe 'Wizard'? Vous devrez peut-être appeler 'super()' dans le constructeur ReservationWizard. – mattbdean

Répondre

1

Vous n'avez pas créé Display avant d'appeler votre assistant. La première chose qu'une application SWT/JFace doit faire est de créer l'affichage.

Vous devez donc:

public static void main(final String [] args) 
{ 
    // Create the display 
    Display display = new Display(); 

    ReservationWizard wizard = new ReservationWizard(); 
    WizardDialog dialog = new WizardDialog(display.getActiveShell(), wizard); 

    dialog.setBlockOnOpen(true); 
    dialog.open(); 
} 
+0

Merci. quand je fais ça. J'ai l'erreur: Exception dans le fil "principal" java.lang.NoClassDefFoundError: org/eclipse/core/commandes/commun/EventManager à java.lang.ClassLoader.defineClass1 (méthode native) à java.lang.ClassLoader.defineClass (ClassLoader.java:763) at java.security.SecureClassLoader.defineClass (SecureClassLoader.java:142) J'ai modifié mon message et ajouté l'erreur complète. –

+0

Vous devez inclure le fichier 'org.eclipse.core.commands' d'Eclipse dans le chemin de compilation de l'application pour utiliser l'assistant JFace. –

+0

Merci beaucoup. Mon problème a été résolu. –