隨筆 - 119  文章 - 3173  trackbacks - 0
          <2007年4月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

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

          常用鏈接

          留言簿(68)

          隨筆分類(136)

          隨筆檔案(122)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 525981
          • 排名 - 93

          最新評論

          很多剛搞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 交口稱贊 閱讀(3404) 評論(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
          謝謝謝謝謝,糾結了好幾天的問題在你清晰的說明下終于解決了。原來之前少了一個分號。  回復  更多評論
            
          主站蜘蛛池模板: 琼结县| 如皋市| 怀安县| 渝北区| 饶平县| 法库县| 内黄县| 农安县| 忻城县| 怀远县| 望城县| 新疆| 三穗县| 安新县| 大洼县| 陆河县| 邹平县| 武穴市| 扶沟县| 罗平县| 原阳县| 平邑县| 北票市| 天津市| 二连浩特市| 扎囊县| 长宁县| 德安县| 延寿县| 吴旗县| 商城县| 涟水县| 横山县| 德安县| 咸丰县| 垣曲县| 齐齐哈尔市| 吉林市| 中宁县| 沽源县| 肇源县|