2011-05-18 69 views
1

我在Windows XP(32位)上運行Java 1.6.0_20上的Swing應用程序。我想通過在Windows Server 2003上運行的Citrix 3.0發佈該應用程序。然而,當嘗試從服務器運行客戶機jar(與在XP上運行相同的JRE和參數時,其工作正常),則會引發以下異常:Windows Server 2003上奇怪的Java Swing UI NullPointerException

Exception: java.lang.NullPointerException 
    Thu May 17 18:52:09 GMT 2011 
    java.lang.NullPointerException 
     at com.sun.java.swing.plaf.windows.WindowsRadioButtonUI.installDefaults(Unknown Source) 
     at com.sun.java.swing.plaf.windows.WindowsCheckBoxUI.installDefaults(Unknown Source) 
     at javax.swing.plaf.basic.BasicButtonUI.installUI(Unknown Source) 
     at javax.swing.JComponent.setUI(Unknown Source) 
     at javax.swing.AbstractButton.setUI(Unknown Source) 
     at com.company.aqqs.displayproject.factory.ToggleFieldFactory.newToggleField(ToggleFieldFactory.java:70) 
     at com.company.aqqs.displayproject.factory.ToggleFieldFactory.newToggleField(ToggleFieldFactory.java:120) 
     at com.company.aqqs.displayproject.factory.ToggleFieldFactory.newToggleField(ToggleFieldFactory.java:156) 
     at com.company.aqqs.ui.MainWindow.getqq_FreezeWindow(MainWindow.java:7546) 
     at com.company.aqqs.ui.MainWindow.getqq_GridField131657(MainWindow.java:7588) 
     at com.company.aqqs.ui.MainWindow.getqq_RefreshPaneGridField(MainWindow.java:7640) 
     at com.company.aqqs.ui.MainWindow.getqq_ToolbarGridField(MainWindow.java:8085) 
     at com.company.aqqs.ui.MainWindow.getqq_MainGrid(MainWindow.java:11228) 
     at com.company.aqqs.ui.MainWindow.getForm(MainWindow.java:11303) 
     at com.company.aqqs.ui.MainWindow.initialize(MainWindow.java:11328) 
     at com.company.aqqs.ui.BaseWindow.<init>(BaseWindow.java:109) 
     at com.company.aqqs.ui.ExWindow.<init>(ExWindow.java:281) 
     at com.company.aqqs.ui.MainWindow.<init>(MainWindow.java:435) 
     at com.company.aqqs.ui.MainWindow.launch(MainWindow.java:11544) 
     at com.company.aqqs.ui.MainWindow.main(MainWindow.java:11557) 

有東西在Windows Server 2003中丟失,將導致拋出NullPointerException,而且同樣重要的是,有一種解決方法?

回答

2

我有一種預感,這已經做支持外觀和感覺每個平臺上,和Windows Server 2003不完全支持的默認外觀的Java虛擬機員工。

你設置一下,以這種方式

/* Choose one of the L&Fs below. */  
public static void main(String[] args) { 
    try { 
     // 1. Set System L&F 
     UIManager.setLookAndFeel(
      UIManager.getSystemLookAndFeelClassName()); 
     // 2. or set cross-platform Java L&F (also called "Metal") 
     UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); 
    } 
    catch (UnsupportedLookAndFeelException e) { 
     // handle exception 
    } 
    catch (ClassNotFoundException e) { 
     // handle exception 
    } 
    catch (InstantiationException e) { 
     // handle exception 
    } 
    catch (IllegalAccessException e) { 
     // handle exception 
    } 

    new SwingApplication(); //Create and show the GUI. 
} 

可能的編程感覺,到指定的視覺和感覺明確和捕獲任何異常可能會解決這個問題。另請參閱Java Tutorials

您可能還需要兩個Java運行時比較每個平臺上,尤其是在運行時環境,即.jar文件。

1

當微軟在操作系統上改變了一些東西時,我看到了類似這樣的空指針錯誤。我們的Java應用程序在Windows更新後停止工作。

更新到最新的JRE已經解決了這個問題,我們幾次遇到它。