隨筆 - 119  文章 - 3173  trackbacks - 0
          <2007年8月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          交友莫獨酒,茅臺西鳳游。
          口干古井貢,心徜洋河流。
          稱多情杜康,趟無量雙溝。
          贊中華巍巍,無此不銷愁。

          常用鏈接

          留言簿(68)

          隨筆分類(136)

          隨筆檔案(122)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 526780
          • 排名 - 92

          最新評論

          很多剛搞SWT的朋友都會遇到這樣一個問題:
          寫的SWT在eclipse中可以運行,但是用命令行去執行就會報錯。
          今天就和大家一起徹底解決這個問題。

          比如我們先寫一個這樣的小程序:

           1 import org.eclipse.swt.SWT;
           2 import org.eclipse.swt.widgets.Display;
           3 import org.eclipse.swt.widgets.Shell;
           4 
           5 
           6 public class BasicSwt extends Shell {
           7 
           8     /**
           9      * Launch the application
          10      * @param args
          11      */
          12     public static void main(String args[]) {
          13         try {
          14             Display display = Display.getDefault();
          15             BasicSwt shell = new BasicSwt(display, SWT.SHELL_TRIM);
          16             shell.open();
          17             shell.layout();
          18             while (!shell.isDisposed()) {
          19                 if (!display.readAndDispatch())
          20                     display.sleep();
          21             }
          22         } catch (Exception e) {
          23             e.printStackTrace();
          24         }
          25     }
          26 
          27     /**
          28      * Create the shell
          29      * @param display
          30      * @param style
          31      */
          32     public BasicSwt(Display display, int style) {
          33         super(display, style);
          34         createContents();
          35     }
          36 
          37     /**
          38      * Create contents of the window
          39      */
          40     protected void createContents() {
          41         setText("SWT Application");
          42         setSize(500375);
          43         //
          44     }
          45 
          46     @Override
          47     protected void checkSubclass() {
          48         // Disable the check that prevents subclassing of SWT components
          49     }
          50 
          51 }
          52 


          在eclipse中運行,ok,可以看到一個空白窗體。

          運行CMD,到項目目錄,運行java BasicSwt,結果報錯了:
          Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Shell
                  at java.lang.ClassLoader.defineClass1(Native Method)
                  at java.lang.ClassLoader.defineClass(Unknown Source)
                  at java.security.SecureClassLoader.defineClass(Unknown Source)
                  at java.net.URLClassLoader.defineClass(Unknown Source)
                  at java.net.URLClassLoader.access$000(Unknown Source)
                  at java.net.URLClassLoader$1.run(Unknown Source)
                  at java.security.AccessController.doPrivileged(Native Method)
                  at java.net.URLClassLoader.findClass(Unknown Source)
                  at java.lang.ClassLoader.loadClass(Unknown Source)
                  at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
                  at java.lang.ClassLoader.loadClass(Unknown Source)
                  at java.lang.ClassLoader.loadClassInternal(Unknown Source)

          為什么?
          因為我們缺少運行SWT需要的類庫和相關DLL鏈接庫
          首先我們先下載一個文件:
          http://download.eclipse.org/eclipse/downloads/drops/R-3.2.2-200702121330/
          下載swt-3.2.2-win32-win32-x86.zip
          解壓縮,主要到里面的兩個文件:
          swt.jar
          swt-win32-3236.dll

          本例中,我們先把這兩個文件放到H:\

          然后把我們執行:java -classpath h:\swt.jar BasicSwt
          這時候可以看到出錯信息變了Exception in thread "main" java.lang.NoClassDefFoundError: BasicSwt

          ok,再改,執行:java -classpath h:\swt.jar; -Djava.library.path=h:\ BasicSwt

          ok,正常啦。。。。。。。。。。。。。。。。。。。。。

          稍微解釋下-Djava.library.path=h:\
          這里指定的是swt-win32-3236.dll存放的路徑

          posted on 2007-04-19 10:07 交口稱贊 閱讀(3406) 評論(4)  編輯  收藏 所屬分類: Eclipse RCP SWT

          FeedBack:
          # re: 徹底解決SWT運行出錯(1)命令行方式 2007-08-18 17:10 MilC
          真的讓人感謝得痛哭流涕啊  在此謝過  回復  更多評論
            
          # re: 徹底解決SWT運行出錯(1)命令行方式 2007-08-18 21:44 交口稱贊
          不客氣,有用就好  回復  更多評論
            
          # re: 徹底解決SWT運行出錯(1)命令行方式 2010-01-04 13:51 alanling
          為什么我還是不行,完全一樣的操作  回復  更多評論
            
          # 感謝 2011-05-21 10:27 java_me
          謝謝謝謝謝,糾結了好幾天的問題在你清晰的說明下終于解決了。原來之前少了一個分號。  回復  更多評論
            
          主站蜘蛛池模板: 苍溪县| 左贡县| 彩票| 丹东市| 嘉鱼县| 婺源县| 罗甸县| 龙口市| 镇雄县| 高淳县| 禹城市| 镇原县| 铁岭市| 西宁市| 屏南县| 榆林市| 吉木萨尔县| 屯门区| 三江| 共和县| 昌都县| 九龙城区| 珲春市| 九江市| 句容市| 绥滨县| 焉耆| 调兵山市| 肥西县| 凉城县| 行唐县| 宜兰市| 林甸县| 大渡口区| 哈尔滨市| 饶河县| 天柱县| 七台河市| 光山县| 刚察县| 阿巴嘎旗|