2017-08-20 13 views
0

私はSWT/jfaceでウィザードを実装するつもりです。org.eclipse.jface.resource.JFaceResources.getResourcesのjava.lang.NullPointerException

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) 

私のコードの一部:それはエラーが発生したコードに見られるように

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

、ReservationWizard()は空であっても、私は私のプログラムを実行すると、私は以下のエラーを持っています。私は何をすべきか?

これは、指定された行にエラーがあります。

編集:私はディスプレイを作成したとき 、私は以下のエラーを持っている:

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

可能な複製を(https://stackoverflow.com/questions/218384/what-is-a- nullpointerexception-and-how-do-i-fix-it) – Marvin

+0

'Wizard'クラスはどこに定義されていますか? ReservationWizardコンストラクタ内で 'super()'を呼び出す必要があるかもしれません。 – mattbdean

答えて

1

はあなたのウィザードを呼び出す前にDisplayを作成していません。 SWT/JFaceアプリケーションが最初にしなければならないことは、ディスプレイを作成することです。

だから、あなたが必要とする:[?何NullPointerExceptionがある、と私はそれをどのように修正すればよい]の

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

ありがとうございます。私はそれをします。私はエラーがあります:スレッド "main"の例外java.lang.NoClassDefFoundError:org/eclipse/core/commands/common/EventManager at java.lang.ClassLoader.defineClass1(ネイティブメソッド) at java.lang.ClassLoader.defineClass (ClassLoader.java:763) java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 私の投稿を編集し、完全なエラーを追加しました。 –

+0

JFaceウィザードを使用するには、Eclipseからの 'org.eclipse.core.commands' jarをアプリケーション構築パスに含める必要があります。 –

+0

本当にありがとうございます。私の問題は解決されました。 –

関連する問題