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

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

          常用鏈接

          留言簿(68)

          隨筆分類(136)

          隨筆檔案(122)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 525992
          • 排名 - 93

          最新評(píng)論

          很多剛搞SWT的朋友都會(huì)遇到這樣一個(gè)問題:
          寫的SWT在eclipse中可以運(yùn)行,但是用命令行去執(zhí)行就會(huì)報(bào)錯(cuò)。
          今天就和大家一起徹底解決這個(gè)問題。

          比如我們先寫一個(gè)這樣的小程序:

           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中運(yùn)行,ok,可以看到一個(gè)空白窗體。

          運(yùn)行CMD,到項(xiàng)目目錄,運(yùn)行java BasicSwt,結(jié)果報(bào)錯(cuò)了:
          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)

          為什么?
          因?yàn)槲覀內(nèi)鄙龠\(yùn)行SWT需要的類庫和相關(guān)DLL鏈接庫
          首先我們先下載一個(gè)文件:
          http://download.eclipse.org/eclipse/downloads/drops/R-3.2.2-200702121330/
          下載swt-3.2.2-win32-win32-x86.zip
          解壓縮,主要到里面的兩個(gè)文件:
          swt.jar
          swt-win32-3236.dll

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

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

          ok,再改,執(zhí)行: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) 評(píng)論(4)  編輯  收藏 所屬分類: Eclipse RCP SWT

          FeedBack:
          # re: 徹底解決SWT運(yùn)行出錯(cuò)(1)命令行方式 2007-08-18 17:10 MilC
          真的讓人感謝得痛哭流涕啊  在此謝過  回復(fù)  更多評(píng)論
            
          # re: 徹底解決SWT運(yùn)行出錯(cuò)(1)命令行方式 2007-08-18 21:44 交口稱贊
          不客氣,有用就好  回復(fù)  更多評(píng)論
            
          # re: 徹底解決SWT運(yùn)行出錯(cuò)(1)命令行方式 2010-01-04 13:51 alanling
          為什么我還是不行,完全一樣的操作  回復(fù)  更多評(píng)論
            
          # 感謝 2011-05-21 10:27 java_me
          謝謝謝謝謝,糾結(jié)了好幾天的問題在你清晰的說明下終于解決了。原來之前少了一個(gè)分號(hào)。  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 和田县| 万全县| 宁明县| 含山县| 赣榆县| 彩票| 达日县| 土默特右旗| 黔江区| 荣成市| 台湾省| 周口市| 永靖县| 临安市| 安阳县| 聊城市| 海口市| 辰溪县| 油尖旺区| 吉木乃县| 曲阳县| 望都县| 新和县| 万盛区| 盐城市| 榆林市| 台中市| 石柱| 揭东县| 香港 | 巴楚县| 株洲县| 景德镇市| 武清区| 秭归县| 同心县| 三明市| 罗甸县| 子洲县| 连江县| 潮安县|